From 447f314eb5c357be15587365aa56eca33ddc3d32 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Sat, 23 Sep 2017 18:43:09 +0300 Subject: [PATCH] fixed #20 --- app/Console/Kernel.php | 2 +- app/Http/Controllers/Install/Database.php | 22 ++++++++++--------- app/Http/Controllers/Install/Requirements.php | 15 +++++++++++-- app/Http/Controllers/Install/Settings.php | 13 +++++++++++ app/Http/Kernel.php | 2 +- ...stalled.php => RedirectIfNotInstalled.php} | 7 +++--- app/Http/ViewComposers/All.php | 2 +- app/Providers/AppServiceProvider.php | 2 +- routes/web.php | 1 + 9 files changed, 47 insertions(+), 19 deletions(-) rename app/Http/Middleware/{CheckIfInstalled.php => RedirectIfNotInstalled.php} (82%) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 618379594..b447f2f42 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -27,7 +27,7 @@ class Kernel extends ConsoleKernel protected function schedule(Schedule $schedule) { // Not installed yet - if (env('DB_DATABASE', '') == '') { + if (!env('APP_INSTALLED')) { return; } diff --git a/app/Http/Controllers/Install/Database.php b/app/Http/Controllers/Install/Database.php index e5657dd02..916e1c0e7 100644 --- a/app/Http/Controllers/Install/Database.php +++ b/app/Http/Controllers/Install/Database.php @@ -61,7 +61,7 @@ class Database extends Controller 'database' => $request['database'], 'username' => $request['username'], 'password' => $request['password'], - 'driver' => 'mysql', + 'driver' => env('DB_CONNECTION', 'mysql'), 'port' => env('DB_PORT', '3306'), ]); @@ -105,18 +105,20 @@ class Database extends Controller ], ])->save(); + $con = env('DB_CONNECTION', 'mysql'); + // Change current connection - $mysql = Config::get('database.connections.mysql'); + $db = Config::get('database.connections.' . $con); - $mysql['host'] = $request['hostname']; - $mysql['database'] = $request['database']; - $mysql['username'] = $request['username']; - $mysql['password'] = $request['password']; - $mysql['prefix'] = $prefix; + $db['host'] = $request['hostname']; + $db['database'] = $request['database']; + $db['username'] = $request['username']; + $db['password'] = $request['password']; + $db['prefix'] = $prefix; - Config::set('database.connections.mysql', $mysql); + Config::set('database.connections.' . $con, $db); - DB::purge('mysql'); - DB::reconnect('mysql'); + DB::purge($con); + DB::reconnect($con); } } diff --git a/app/Http/Controllers/Install/Requirements.php b/app/Http/Controllers/Install/Requirements.php index 29b3c4263..bd87542d9 100644 --- a/app/Http/Controllers/Install/Requirements.php +++ b/app/Http/Controllers/Install/Requirements.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Install; use DotenvEditor; +use File; use Illuminate\Routing\Controller; class Requirements extends Controller @@ -19,7 +20,9 @@ class Requirements extends Controller if (empty($requirements)) { // Create the .env file - $this->createEnvFile(); + if (!File::exists(base_path('.env'))) { + $this->createEnvFile(); + } redirect('install/language')->send(); } else { @@ -80,6 +83,10 @@ class Requirements extends Controller $requirements[] = trans('install.requirements.extension', ['extension' => 'cURL']); } + if (!extension_loaded('xml')) { + $requirements[] = trans('install.requirements.extension', ['extension' => 'XML']); + } + if (!extension_loaded('zip')) { $requirements[] = trans('install.requirements.extension', ['extension' => 'ZIP']); } @@ -120,13 +127,17 @@ class Requirements extends Controller 'key' => 'APP_ENV', 'value' => 'production', ], + [ + 'key' => 'APP_INSTALLED', + 'value' => 'false', + ], [ 'key' => 'APP_KEY', 'value' => 'base64:'.base64_encode(random_bytes(32)), ], [ 'key' => 'APP_DEBUG', - 'value' => 'false', + 'value' => 'true', ], [ 'key' => 'APP_LOG_LEVEL', diff --git a/app/Http/Controllers/Install/Settings.php b/app/Http/Controllers/Install/Settings.php index e8720ec1c..9ed7580d0 100644 --- a/app/Http/Controllers/Install/Settings.php +++ b/app/Http/Controllers/Install/Settings.php @@ -6,6 +6,7 @@ use Artisan; use App\Http\Requests\Install\Setting as Request; use App\Models\Auth\User; use App\Models\Company\Company; +use DotenvEditor; use File; use Illuminate\Routing\Controller; use Setting; @@ -85,6 +86,18 @@ class Settings extends Controller //Artisan::call('config:cache'); //Artisan::call('route:cache'); + // Update .env file + DotenvEditor::setKeys([ + [ + 'key' => 'APP_INSTALLED', + 'value' => 'true', + ], + [ + 'key' => 'APP_DEBUG', + 'value' => 'false', + ], + ])->save(); + // Rename the robots.txt file try { File::move(base_path('robots.txt.dist'), base_path('robots.txt')); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 4f1078885..631d622d6 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -34,7 +34,7 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, - \App\Http\Middleware\CheckIfInstalled::class, + \App\Http\Middleware\RedirectIfNotInstalled::class, \App\Http\Middleware\LoadSettings::class, ], diff --git a/app/Http/Middleware/CheckIfInstalled.php b/app/Http/Middleware/RedirectIfNotInstalled.php similarity index 82% rename from app/Http/Middleware/CheckIfInstalled.php rename to app/Http/Middleware/RedirectIfNotInstalled.php index 970eb3c7a..cff90ac62 100644 --- a/app/Http/Middleware/CheckIfInstalled.php +++ b/app/Http/Middleware/RedirectIfNotInstalled.php @@ -3,8 +3,9 @@ namespace App\Http\Middleware; use Closure; +use File; -class CheckIfInstalled +class RedirectIfNotInstalled { /** * Handle an incoming request. @@ -15,8 +16,8 @@ class CheckIfInstalled */ public function handle($request, Closure $next) { - // DB_DATABASE not empty means installed - if (env('DB_DATABASE', '') != '') { + // Check if .env file exists + if (File::exists(base_path('.env'))) { return $next($request); } diff --git a/app/Http/ViewComposers/All.php b/app/Http/ViewComposers/All.php index 80845ddec..afa649aba 100644 --- a/app/Http/ViewComposers/All.php +++ b/app/Http/ViewComposers/All.php @@ -18,7 +18,7 @@ class All public function compose(View $view) { // Make sure it's installed - if (env('DB_DATABASE', '') != '') { + if (env('APP_INSTALLED')) { // Share date format $view->with(['date_format' => $this->getCompanyDateFormat()]); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 5c3cebb3d..80c8b0abc 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -31,7 +31,7 @@ class AppServiceProvider extends ServiceProvider */ public function register() { - if (env('APP_DEBUG')) { + if (env('APP_INSTALLED') && env('APP_DEBUG')) { $this->app->register(\Barryvdh\Debugbar\ServiceProvider::class); } diff --git a/routes/web.php b/routes/web.php index 40239a628..6df387faa 100644 --- a/routes/web.php +++ b/routes/web.php @@ -133,6 +133,7 @@ Route::group(['middleware' => ['guest', 'language']], function () { }); Route::group(['prefix' => 'install'], function () { + Route::get('/', 'Install\Requirements@show'); Route::get('requirements', 'Install\Requirements@show'); Route::get('language', 'Install\Language@create');