/**
  * Installer Process for command line.
  *
  * @param $console_output
  * @param $db_host
  * @param $db_name
  * @param $db_username
  * @param $db_password
  * @param $site_name
  * @param $site_description
  * @param $site_url
  * @param $user_civility
  * @param $user_first_name
  * @param $user_last_name
  * @param $user_email
  */
 public function consoleInstallationProcess($console_output, $db_host, $db_name, $db_username, $db_password, $site_name, $site_description, $site_url, $user_civility, $user_first_name, $user_last_name, $user_email)
 {
     try {
         if (cmsinstalled()) {
             throw new \Exception('The CMS is already installed!');
         }
         $success = $this->testDBConnection($db_host, $db_name, $db_username, $db_password);
         if ($success) {
             $this->generateConfigs($site_name, $site_description, $site_url, $db_host, $db_name, $db_username, $db_password, $user_first_name, $user_last_name, $user_email);
             Artisan::call('cache:clear');
             Artisan::call('config:clear');
             $this->migrate(['APP_SITE_NAME' => $site_name, 'APP_URL' => $site_url], ['--force' => true, '--database' => 'installer'], ['--force' => true, '--database' => 'installer']);
             $password = $this->r_users->generateUserPassword();
             $this->addUserAdmin(['civility' => $user_civility, 'first_name' => $user_first_name, 'last_name' => $user_last_name, 'email' => $user_email, 'password' => $password]);
             $this->set_env_as_production();
             $console_output->write(sprintf(trans('installer::installer.command_line_show_password'), $user_email, $password));
             $console_output->write(trans('installer::installer.command_line_remember_change_password'));
         } else {
             $console_output->error(trans('installer::installer.error:db_connection'));
         }
     } catch (InvalidArgumentException $e) {
         $console_output->error($e->getMessage());
     } catch (\Exception $e) {
         $console_output->error($e->getMessage());
     }
 }
 /**
  * Execute the console command.
  *
  * @return void
  */
 public function handle()
 {
     parent::fire();
     try {
         if (cmsinstalled()) {
             throw new \Exception('The CMS is already installed!');
         }
         $success = $this->r_installer->testDBConnection($this->argument('db-host'), $this->argument('db-name'), $this->argument('db-username'), $this->argument('db-password'));
         if ($success) {
             $this->r_installer->generateConfigs($this->argument('site-name'), $this->argument('site-description'), $this->argument('site-url'), $this->argument('db-host'), $this->argument('db-name'), $this->argument('db-username'), $this->argument('db-password'), $this->argument('user-first-name'), $this->argument('user-last-name'), $this->argument('user-email'));
             $this->call('cache:clear');
             $this->r_installer->migrate(['APP_SITE_NAME' => $this->argument('site-name'), 'APP_URL' => $this->argument('site-url')], ['--force' => true, '--database' => 'installer'], ['--force' => true, '--database' => 'installer']);
             $password = Str::random(Settings::get('installer.password_length'));
             $this->r_installer->addUserAdmin(['civility' => $this->argument('user-civility'), 'first_name' => $this->argument('user-first-name'), 'last_name' => $this->argument('user-last-name'), 'email' => $this->argument('user-email'), 'password' => $password]);
             $this->r_installer->set_env_as_production();
             $this->line(sprintf(trans('installer::installer.command_line_show_password'), $this->argument('user-email'), $password));
             $this->line(trans('installer::installer.command_line_remember_change_password'));
         } else {
             $this->error(trans('installer::installer.error:db_connection'));
         }
     } catch (InvalidArgumentException $e) {
         $this->error($e->getMessage());
     } catch (\Exception $e) {
         $this->error($e->getMessage());
     }
 }
 /**
  * Execute the console command.
  *
  * @return void
  */
 public function handle()
 {
     parent::fire();
     try {
         if (!cmsinstalled()) {
             throw new \Exception('The CMS is not installed!');
         }
         $password = Str::random(8);
         $this->r_installer->addUserAdmin(['civility' => $this->argument('user-civility'), 'first_name' => $this->argument('user-first-name'), 'last_name' => $this->argument('user-last-name'), 'email' => $this->argument('user-email'), 'password' => $password]);
         $this->line('<comment>Password associated to ' . $this->argument('user-email') . ' : ' . $password . '</comment>');
         $this->line('<comment>Do not forget to change this password after your first connection!</comment>');
     } catch (InvalidArgumentException $e) {
         $this->error($e->getMessage());
     } catch (\Exception $e) {
         $this->error($e->getMessage());
     }
 }
 /**
  * Boot the application events.
  *
  * @return void
  */
 public function boot()
 {
     $this->registerTranslations();
     $this->registerConfig();
     $this->registerViews();
     if (cmsinstalled()) {
         if (true || Settings::get('users.users_module_as_home_page')) {
             Route::group(['middleware' => ['web', 'user'], 'namespace' => 'cms\\Modules\\Users\\Http\\Controllers\\Frontend'], function () {
                 Route::get('/', ['as' => 'home', 'uses' => 'UsersController@index']);
             });
         }
         if (Settings::get('users.is_registration_allowed')) {
             Route::group(['middleware' => ['web'], 'as' => 'users.', 'namespace' => 'cms\\Modules\\Users\\Http\\Controllers\\Frontend'], function () {
                 // Registration routes...
                 Route::get('register', ['as' => 'register', 'uses' => 'RegisterController@showRegistrationForm']);
                 Route::post('register', 'RegisterController@register');
                 // Register from social networks
                 Route::get('register/{provider?}', ['uses' => 'RegisterController@getRegisterFromProvider']);
                 Route::post('register/{provider?}', ['uses' => 'RegisterController@postRegisterFromProvider']);
             });
         }
     }
 }
 /**
  * Set the active theme based on the settings
  */
 private function setActiveTheme()
 {
     if (cmsinstalled()) {
         $theme = '';
         if ($this->inAdministration() || $this->inInstaller()) {
             $theme = Settings::get('themes.themes.backend');
         } else {
             $theme = Settings::get('themes.themes.frontend');
         }
         ThemeFacade::setCurrent($theme);
     } else {
         ThemeFacade::setCurrent(config('themes.themes.backend'));
     }
 }
 /**
  * Get the services provided by the provider.
  *
  * @return array
  */
 public function provides()
 {
     return cmsinstalled() ? ['Laravel\\Socialite\\Contracts\\Factory'] : [];
 }
 public function registerRoutes()
 {
     if (cmsinstalled()) {
         // xABE Todo :: CACHE THIS
         $pages = $this->r_page->findWhere(['is_home' => 0]);
         $config['namespace'] = 'Modules\\Pages\\Http\\Controllers';
         $config['middleware'] = ['web'];
         if ($pages->count()) {
             $this->router->group($config, function ($router) use($pages) {
                 foreach ($pages as $page) {
                     $router->get($page->uri, 'PagesController@map');
                 }
             });
         }
     }
 }