EnvironmentManager = $environmentManager; } /** * Display the Environment menu page. * * @return \Illuminate\View\View */ public function environmentMenu() { return view('vendor.installer.environment'); } /** * Display the Environment page. * * @return \Illuminate\View\View */ public function environmentWizard() { $envConfig = $this->EnvironmentManager->getEnvContent(); return view('vendor.installer.environment-wizard', compact('envConfig')); } /** * Display the Environment page. * * @return \Illuminate\View\View */ public function environmentClassic() { $envConfig = $this->EnvironmentManager->getEnvContent(); return view('vendor.installer.environment-classic', compact('envConfig')); } /** * Processes the newly saved environment configuration (Classic). * * @param Request $input * @param Redirector $redirect * @return \Illuminate\Http\RedirectResponse */ public function saveClassic(Request $input, Redirector $redirect) { $message = $this->EnvironmentManager->saveFileClassic($input); event(new EnvironmentSaved($input)); return $redirect->route('LaravelInstaller::environmentClassic') ->with(['message' => $message]); } /** * Processes the newly saved environment configuration (Form Wizard). * * @param Request $request * @param Redirector $redirect * @return \Illuminate\Http\RedirectResponse */ public function saveWizard(Request $request, Redirector $redirect) { $rules = config('installer.environment.form.rules'); $messages = [ 'environment_custom.required_if' => trans('installer_messages.environment.wizard.form.name_required'), ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return $redirect->route('LaravelInstaller::environmentWizard')->withInput()->withErrors($validator->errors()); } if (! $this->checkDatabaseConnection($request)) { return $redirect->route('LaravelInstaller::environmentWizard')->withInput()->withErrors([ 'database_connection' => trans('installer_messages.environment.wizard.form.db_connection_failed'), ]); } $results = $this->EnvironmentManager->saveFileWizard($request); event(new EnvironmentSaved($request)); return $redirect->route('LaravelInstaller::database') ->with(['results' => $results]); } /** * TODO: We can remove this code if PR will be merged: https://github.com/RachidLaasri/LaravelInstaller/pull/162 * Validate database connection with user credentials (Form Wizard). * * @param Request $request * @return bool */ private function checkDatabaseConnection(Request $request) { $connection = $request->input('database_connection'); $settings = config("database.connections.$connection"); config([ 'database' => [ 'default' => $connection, 'connections' => [ $connection => array_merge($settings, [ 'driver' => $connection, 'host' => $request->input('database_hostname'), 'port' => $request->input('database_port'), 'database' => $request->input('database_name'), 'username' => $request->input('database_username'), 'password' => $request->input('database_password'), ]), ], ], ]); DB::purge(); try { DB::connection()->getPdo(); return true; } catch (Exception $e) { return false; } } }