add post-submit checks to smtp & db

This commit is contained in:
Benjamin Beganović 2020-12-08 15:04:07 +01:00
parent 68a84df0dd
commit 1d0f5b2ad7
2 changed files with 37 additions and 23 deletions

View File

@ -67,6 +67,32 @@ class SetupController extends Controller
return response('Oops, something went wrong. Check your logs.'); /* We should never reach this block, but just in case. */ return response('Oops, something went wrong. Check your logs.'); /* We should never reach this block, but just in case. */
} }
try {
$db = SystemHealth::dbCheck($request);
if ($db['success'] == false) {
throw new \Exception($db['message']);
}
} catch(\Exception $e) {
return response([
'message' => 'Oops, connection to database was not successful.',
'error' => $e->getMessage(),
]);
}
try {
$smtp = SystemHealth::testMailServer($request);
if ($smtp['success'] == false) {
throw new \Exception($smtp['message']);
}
} catch (\Exception $e) {
return response([
'message' => 'Oops, connection to mail server was not successful.',
'error' => $e->getMessage(),
]);
}
$mail_driver = $request->input('mail_driver'); $mail_driver = $request->input('mail_driver');
$url = $request->input('url'); $url = $request->input('url');
@ -166,15 +192,13 @@ class SetupController extends Controller
*/ */
public function checkMail(CheckMailRequest $request) public function checkMail(CheckMailRequest $request)
{ {
info($request->all());
try { try {
$response_array = SystemHealth::testMailServer($request); $response = SystemHealth::testMailServer($request);
if (count($response_array) == 0) { if ($response['success']) {
return response([], 200); return response([], 200);
} else { } else {
return response()->json(['message' => $response_array[0]], 400); return response()->json(['message' => $response['message']], 400);
} }
} catch (Exception $e) { } catch (Exception $e) {
info(['message' => $e->getMessage(), 'action' => 'SetupController::checkMail()']); info(['message' => $e->getMessage(), 'action' => 'SetupController::checkMail()']);
@ -185,10 +209,10 @@ class SetupController extends Controller
private function failsafeMailCheck($request) private function failsafeMailCheck($request)
{ {
$response_array = SystemHealth::testMailServer($request); $response = SystemHealth::testMailServer($request);
if ($response_array instanceof Response) { if ($response['success']) {
return true; true;
} }
return false; return false;

View File

@ -160,7 +160,7 @@ class SystemHealth
{ {
$result = ['success' => false]; $result = ['success' => false];
if ($request && $request instanceof CheckDatabaseRequest) { if ($request) {
config(['database.connections.db-ninja-01.host'=> $request->input('db_host')]); config(['database.connections.db-ninja-01.host'=> $request->input('db_host')]);
config(['database.connections.db-ninja-01.database'=> $request->input('db_database')]); config(['database.connections.db-ninja-01.database'=> $request->input('db_database')]);
config(['database.connections.db-ninja-01.username'=> $request->input('db_username')]); config(['database.connections.db-ninja-01.username'=> $request->input('db_username')]);
@ -191,6 +191,7 @@ class SystemHealth
} catch (Exception $e) { } catch (Exception $e) {
$result[] = [config('database.connections.'.config('database.default').'.database') => false]; $result[] = [config('database.connections.'.config('database.default').'.database') => false];
$result['success'] = false; $result['success'] = false;
$result['message'] = $e->getMessage();
} }
} }
} }
@ -209,7 +210,7 @@ class SystemHealth
return []; return [];
} }
if ($request && $request instanceof CheckMailRequest) { if ($request) {
config(['mail.driver' => $request->input('mail_driver')]); config(['mail.driver' => $request->input('mail_driver')]);
config(['mail.host' => $request->input('mail_host')]); config(['mail.host' => $request->input('mail_host')]);
config(['mail.port' => $request->input('mail_port')]); config(['mail.port' => $request->input('mail_port')]);
@ -223,21 +224,10 @@ class SystemHealth
try { try {
Mail::to(config('mail.from.address'))->send(new TestMailServer('Email Server Works!', config('mail.from.address'))); Mail::to(config('mail.from.address'))->send(new TestMailServer('Email Server Works!', config('mail.from.address')));
} catch (Exception $e) { } catch (Exception $e) {
return [$e->getMessage()]; return ['success' => false, 'message' => $e->getMessage()];
} }
/* return ['success' => true];
* 'message' => 'count(): Parameter must be an array or an object that implements Countable',
* 'action' => 'SetupController::checkMail()',
*
* count(Mail::failures())
*/
if (Mail::failures() > 0) {
return Mail::failures();
}
return response()->json(['message' => 'Success'], 200);
} }
private static function checkEnvWritable() private static function checkEnvWritable()