diff --git a/app/Http/Controllers/SetupController.php b/app/Http/Controllers/SetupController.php index 7c8b02381b46..41ceb09eb839 100644 --- a/app/Http/Controllers/SetupController.php +++ b/app/Http/Controllers/SetupController.php @@ -1,6 +1,6 @@ $check]); } public function doSetup(StoreSetupRequest $request) { + $check = SystemHealth::check(); + + if ($check['system_status'] === false) { + return; /* This should never be reached. */ + } + $_ENV['APP_KEY'] = config('app.key'); $_ENV['APP_URL'] = $request->input('url'); $_ENV['APP_DEBUG'] = $request->input('debug') ? 'true' : 'false'; @@ -82,9 +87,9 @@ class SetupController extends Controller $fp = fopen($filePath, 'w'); fwrite($fp, $config); fclose($fp); - + /* We need this in some environments that do not have STDIN defined */ - define('STDIN',fopen("php://stdin","r")); + define('STDIN', fopen('php://stdin', 'r')); /* Make sure no stale connections are cached */ \DB::purge('db-ninja-01'); @@ -98,7 +103,7 @@ class SetupController extends Controller if (Account::count() == 0) { $account = CreateAccount::dispatchNow($request->all()); } - + return redirect('/'); } @@ -109,7 +114,6 @@ class SetupController extends Controller */ public function checkDB(CheckDatabaseRequest $request): Response { - $status = SystemHealth::dbCheck($request); info($status); @@ -128,17 +132,15 @@ class SetupController extends Controller */ public function checkMail(CheckMailRequest $request) { - try { $response_array = SystemHealth::testMailServer($request); - if(count($response_array) == 0) + if (count($response_array) == 0) { return response([], 200); - else + } else { return response()->json($response_array, 200); - - - } catch (\Exception $e) { + } +` } catch (\Exception $e) { return response()->json(['message' => $e->getMessage()], 400); } } diff --git a/app/Utils/SystemHealth.php b/app/Utils/SystemHealth.php index d1c72b1ac7f6..2cc0356a187a 100644 --- a/app/Utils/SystemHealth.php +++ b/app/Utils/SystemHealth.php @@ -1,6 +1,6 @@ (bool)$system_health, + 'system_health' => (bool) $system_health, 'extensions' => self::extensions(), - 'php_version' => phpversion(), - 'min_php_version' => self::$php_version, + 'php_version' => [ + 'minimum_php_version' => self::$php_version, + 'current_php_version' => phpversion(), + 'is_okay' => version_compare(phpversion(), self::$php_version, '>='), + ], + 'env_writable' => self::checkEnvWritable(), //'dbs' => self::dbCheck(), //'mail' => self::testMailServer(), - 'env_writable' => self::checkEnvWritable(), ]; } @@ -91,10 +94,10 @@ class SystemHealth if (! config('ninja.db.multi_db_enabled')) { try { $pdo = DB::connection()->getPdo(); - $result[] = [ DB::connection()->getDatabaseName() => true ]; + $result[] = [DB::connection()->getDatabaseName() => true]; $result['success'] = true; } catch (\Exception $e) { - $result[] = [ config('database.connections.' . config('database.default') . '.database') => false ]; + $result[] = [config('database.connections.'.config('database.default').'.database') => false]; $result['success'] = false; } } else { @@ -103,10 +106,10 @@ class SystemHealth try { $pdo = DB::connection()->getPdo(); - $result[] = [ DB::connection()->getDatabaseName() => true ]; + $result[] = [DB::connection()->getDatabaseName() => true]; $result['success'] = true; } catch (\Exception $e) { - $result[] = [ config('database.connections.' . config('database.default') . '.database') => false ]; + $result[] = [config('database.connections.'.config('database.default').'.database') => false]; $result['success'] = false; } } @@ -138,15 +141,17 @@ class SystemHealth ->send(new TestMailServer('Email Server Works!', config('mail.from.address'))); } catch (\Exception $e) { \Log::error($e->getMessage()); + return $e->getMessage(); } if (count(Mail::failures()) > 0) { - \Log::error(print_r(Mail::failures(),1)); + \Log::error(print_r(Mail::failures(), 1)); + return Mail::failures(); } - return response()->json(['message'=>'Success'],200); + return response()->json(['message'=>'Success'], 200); } private static function checkEnvWritable() diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 106a9c1c4c1c..67bf85c28e45 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -3183,4 +3183,12 @@ return [ 'waiting_for_approval' => 'Waiting for approval', 'quote_still_not_approved' => 'This quote is still not approved', 'list_of_credits' => 'Credits', + + 'required_extensions' => 'Required extensions', + 'php_version' => 'PHP version', + 'writable_env_file' => 'Writable .env file', + 'env_not_writable' => '.env file is not writable by the current user.', + 'minumum_php_version' => 'Minimum PHP version', + 'satisfy_requirements' => 'Make sure all requirements are satisfied.', + 'oops_issues' => 'Oops, something doesn\'t look right!', ]; diff --git a/resources/views/setup/_issues.blade.php b/resources/views/setup/_issues.blade.php new file mode 100644 index 000000000000..2dfe3e8617f8 --- /dev/null +++ b/resources/views/setup/_issues.blade.php @@ -0,0 +1,61 @@ +
+
+

+ {{ ctrans('texts.oops_issues') }} +

+

+ {{ ctrans('texts.satisfy_requirements') }} +

+
+
+
+
+
+ {{ ctrans('texts.required_extensions') }} +
+
+ @foreach($check['extensions'] as $extension) + + {{ key($extension) }} + + @endforeach +
+
+
+
+ {{ ctrans('texts.php_version') }} +
+
+ @if($check['php_version']['is_okay']) + + {{ strtoupper(ctrans('texts.ok')) }}! + + @else + + {{ ctrans('texts.minumum_php_version') }}: {{ $check['php_version']['minimum_php_version'] }} + + + {{ ctrans('texts.current') }}: {{ $check['php_version']['current_php_version'] }} + + @endif +
+
+
+
+ {{ ctrans('texts.writable_env_file') }} +
+
+ @if($check['env_writable']) + + {{ strtoupper(ctrans('texts.ok')) }}! + + @else + + {{ ctrans('texts.env_not_writable') }} + + @endif +
+
+
+
+
\ No newline at end of file diff --git a/resources/views/setup/index.blade.php b/resources/views/setup/index.blade.php index e436ed81d0aa..c039caeb65e7 100644 --- a/resources/views/setup/index.blade.php +++ b/resources/views/setup/index.blade.php @@ -29,29 +29,34 @@ @endif - @include('setup._application') - @include('setup._database') - @include('setup._mail') - @include('setup._account') + @if($check['system_health'] === false) + @include('setup._issues') + @else -
-
-
- - I agree to - {{ ctrans('texts.terms_of_service') }} - + @include('setup._application') + @include('setup._database') + @include('setup._mail') + @include('setup._account') + +
+
+ + + +
- -
-
- + @endif