2017-01-12 19:40:20 -08:00
< ? php
namespace App\Http\Controllers\Api ;
use Illuminate\Http\Request ;
use App\Http\Controllers\Controller ;
2017-07-07 23:44:48 -07:00
use App\Models\Ldap ;
2017-10-16 07:07:21 -07:00
use Validator ;
use App\Models\Setting ;
2017-10-19 08:18:56 -07:00
use Mail ;
2018-02-22 16:35:34 -08:00
use App\Notifications\SlackTest ;
use Notification ;
2018-03-02 18:01:20 -08:00
use App\Notifications\MailTest ;
2017-01-12 19:40:20 -08:00
class SettingsController extends Controller
{
2017-07-07 23:44:48 -07:00
2017-10-16 05:52:18 -07:00
public function ldaptest ()
2017-07-07 23:44:48 -07:00
{
2017-10-16 05:54:33 -07:00
2017-10-16 07:07:21 -07:00
if ( Setting :: getSettings () -> ldap_enabled != '1' ) {
2020-04-09 09:55:44 -07:00
\Log :: debug ( 'LDAP is not enabled so cannot test.' );
return response () -> json ([ 'message' => 'LDAP is not enabled, so we cannot test LDAP connections.' ], 400 );
2017-10-16 07:07:21 -07:00
}
2017-07-07 23:44:48 -07:00
\Log :: debug ( 'Preparing to test LDAP connection' );
try {
$connection = Ldap :: connectToLdap ();
try {
\Log :: debug ( 'attempting to bind to LDAP for LDAP test' );
Ldap :: bindAdminToLdap ( $connection );
return response () -> json ([ 'message' => 'It worked!' ], 200 );
} catch ( \Exception $e ) {
2020-04-09 09:55:44 -07:00
\Log :: debug ( 'LDAP connected but Bind failed. Please check your LDAP settings and try again.' );
2017-07-07 23:44:48 -07:00
return response () -> json ([ 'message' => $e -> getMessage ()], 400 );
//return response()->json(['message' => $e->getMessage()], 500);
}
} catch ( \Exception $e ) {
2020-04-09 09:55:44 -07:00
\Log :: info ( 'LDAP connection failed but we cannot debug it any further on our end.' );
return response () -> json ([ 'message' => 'The LDAP connection failed but we cannot debug it any further on our end. The error from the server is: ' . $e -> getMessage ()], 500 );
2017-07-07 23:44:48 -07:00
}
}
2017-10-16 06:34:04 -07:00
public function ldaptestlogin ( Request $request )
{
2017-10-16 07:07:21 -07:00
if ( Setting :: getSettings () -> ldap_enabled != '1' ) {
\Log :: debug ( 'LDAP is not enabled. Cannot test.' );
return response () -> json ([ 'message' => 'LDAP is not enabled, cannot test.' ], 400 );
}
$rules = array (
'ldaptest_user' => 'required' ,
'ldaptest_password' => 'required'
);
2017-10-16 06:34:04 -07:00
2017-10-16 07:07:21 -07:00
$validator = Validator :: make ( $request -> all (), $rules );
if ( $validator -> fails ()) {
\Log :: debug ( 'LDAP Validation test failed.' );
2017-10-16 09:00:51 -07:00
$validation_errors = implode ( ' ' , $validator -> errors () -> all ());
2017-10-16 07:07:21 -07:00
return response () -> json ([ 'message' => $validator -> errors () -> all ()], 400 );
}
\Log :: debug ( 'Preparing to test LDAP login' );
2017-10-16 06:34:04 -07:00
try {
$connection = Ldap :: connectToLdap ();
try {
Ldap :: bindAdminToLdap ( $connection );
2017-10-16 07:07:21 -07:00
\Log :: debug ( 'Attempting to bind to LDAP for LDAP test' );
2017-10-16 06:34:04 -07:00
try {
$ldap_user = Ldap :: findAndBindUserLdap ( $request -> input ( 'ldaptest_user' ), $request -> input ( 'ldaptest_password' ));
2017-10-16 06:39:36 -07:00
if ( $ldap_user ) {
2017-10-16 06:46:33 -07:00
\Log :: debug ( 'It worked! ' . $request -> input ( 'ldaptest_user' ) . ' successfully binded to LDAP.' );
return response () -> json ([ 'message' => 'It worked! ' . $request -> input ( 'ldaptest_user' ) . ' successfully binded to LDAP.' ], 200 );
2017-10-16 06:39:36 -07:00
}
2017-10-16 07:07:21 -07:00
return response () -> json ([ 'message' => 'Login Failed. ' . $request -> input ( 'ldaptest_user' ) . ' did not successfully bind to LDAP.' ], 400 );
2017-10-16 06:39:36 -07:00
2017-10-16 06:34:04 -07:00
} catch ( \Exception $e ) {
\Log :: debug ( 'LDAP login failed' );
return response () -> json ([ 'message' => $e -> getMessage ()], 400 );
}
} catch ( \Exception $e ) {
\Log :: debug ( 'Bind failed' );
return response () -> json ([ 'message' => $e -> getMessage ()], 400 );
//return response()->json(['message' => $e->getMessage()], 500);
}
} catch ( \Exception $e ) {
\Log :: debug ( 'Connection failed' );
2017-10-16 09:00:51 -07:00
return response () -> json ([ 'message' => $e -> getMessage ()], 500 );
2017-10-16 06:34:04 -07:00
}
}
2018-02-22 16:35:34 -08:00
public function slacktest ()
{
if ( $settings = Setting :: getSettings () -> slack_channel == '' ) {
\Log :: debug ( 'Slack is not enabled. Cannot test.' );
return response () -> json ([ 'message' => 'Slack is not enabled, cannot test.' ], 400 );
}
\Log :: debug ( 'Preparing to test slack connection' );
try {
Notification :: send ( $settings = Setting :: getSettings (), new SlackTest ());
return response () -> json ([ 'message' => 'Success' ], 200 );
} catch ( \Exception $e ) {
\Log :: debug ( 'Slack connection failed' );
return response () -> json ([ 'message' => $e -> getMessage ()], 400 );
}
}
2017-10-19 08:18:56 -07:00
/**
* Test the email configuration
*
* @ author [ A . Gianotto ] [ < snipe @ snipe . net > ]
* @ since [ v3 . 0 ]
* @ return Redirect
*/
public function ajaxTestEmail ()
{
2017-10-19 08:33:46 -07:00
if ( ! config ( 'app.lock_passwords' )) {
try {
2018-03-02 18:01:20 -08:00
Notification :: send ( Setting :: first (), new MailTest ());
2017-11-03 14:58:49 -07:00
return response () -> json ([ 'message' => 'Mail sent to ' . config ( 'mail.reply_to.address' )], 200 );
2017-10-19 08:33:46 -07:00
} catch ( Exception $e ) {
return response () -> json ([ 'message' => $e -> getMessage ()], 500 );
}
2017-10-19 08:18:56 -07:00
}
2017-10-19 08:33:46 -07:00
return response () -> json ([ 'message' => 'Mail would have been sent, but this application is in demo mode! ' ], 200 );
2017-10-19 08:18:56 -07:00
}
2017-01-12 19:40:20 -08:00
}