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. */
}
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');
$url = $request->input('url');
@ -166,15 +192,13 @@ class SetupController extends Controller
*/
public function checkMail(CheckMailRequest $request)
{
info($request->all());
try {
$response_array = SystemHealth::testMailServer($request);
$response = SystemHealth::testMailServer($request);
if (count($response_array) == 0) {
if ($response['success']) {
return response([], 200);
} else {
return response()->json(['message' => $response_array[0]], 400);
return response()->json(['message' => $response['message']], 400);
}
} catch (Exception $e) {
info(['message' => $e->getMessage(), 'action' => 'SetupController::checkMail()']);
@ -185,10 +209,10 @@ class SetupController extends Controller
private function failsafeMailCheck($request)
{
$response_array = SystemHealth::testMailServer($request);
$response = SystemHealth::testMailServer($request);
if ($response_array instanceof Response) {
return true;
if ($response['success']) {
true;
}
return false;

View File

@ -160,7 +160,7 @@ class SystemHealth
{
$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.database'=> $request->input('db_database')]);
config(['database.connections.db-ninja-01.username'=> $request->input('db_username')]);
@ -191,6 +191,7 @@ class SystemHealth
} catch (Exception $e) {
$result[] = [config('database.connections.'.config('database.default').'.database') => false];
$result['success'] = false;
$result['message'] = $e->getMessage();
}
}
}
@ -209,7 +210,7 @@ class SystemHealth
return [];
}
if ($request && $request instanceof CheckMailRequest) {
if ($request) {
config(['mail.driver' => $request->input('mail_driver')]);
config(['mail.host' => $request->input('mail_host')]);
config(['mail.port' => $request->input('mail_port')]);
@ -223,21 +224,10 @@ class SystemHealth
try {
Mail::to(config('mail.from.address'))->send(new TestMailServer('Email Server Works!', config('mail.from.address')));
} catch (Exception $e) {
return [$e->getMessage()];
return ['success' => false, 'message' => $e->getMessage()];
}
/*
* '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);
return ['success' => true];
}
private static function checkEnvWritable()