/**
  * Sets application in installed state (disables installer)
  */
 public static function setInstalled()
 {
     // Set App secret
     Yii::$app->config->set(Enum::APP_SECRET, md5(uniqid(time(), TRUE)));
     $param = Configuration::getParam();
     $param[Enum::APP_INSTALLED] = TRUE;
     Configuration::setParam($param);
 }
 /**
  * Rewrites the configuration file
  */
 public static function rewriteConfiguration()
 {
     // Get Current Configuration
     $config = Configuration::get();
     // Add Application Name to Configuration
     $config['name'] = Yii::$app->config->get(Enum::APP_NAME);
     // Add Caching
     $cacheClass = Yii::$app->config->get(Enum::CACHE_CLASS);
     if (!$cacheClass) {
         $cacheClass = FileCache::className();
     }
     $config['components']['cache'] = ['class' => $cacheClass];
     // Add Auth Clients
     $config['components']['authClientCollection']['class'] = 'yii\\authclient\\Collection';
     Configuration::set($config);
 }
 /**
  * Last Step, finish up the installation
  */
 public function actionFinished()
 {
     // Rewrite whole configuration file, also sets application
     // in installed state.
     Configuration::rewriteConfiguration();
     // Set to installed
     InstallerModule::setInstalled();
     return $this->render('finished');
 }
 public function actionInstall()
 {
     $model = new InstallerForm();
     $param = Configuration::getParam();
     if ($model->load(Yii::$app->request->post())) {
         $model->install = $model->install === '0' ? TRUE : FALSE;
         $param['installed'] = $model->install;
         Configuration::setParam($param);
     }
     return $this->render('install', ['model' => $model]);
 }
 /**
  * @return array|string|\yii\web\Response
  */
 public function actionMailer()
 {
     $config = Configuration::get();
     $param = Configuration::getParam();
     $mailer = new MailerForm();
     if ($mailer->load(Yii::$app->request->post())) {
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ActiveForm::validate($mailer);
         }
         if ($mailer->validate()) {
             if ($mailer->useTransport === '0') {
                 $mailer->useTransport = FALSE;
             } else {
                 $mailer->useTransport = TRUE;
             }
             // Write Config
             $config['components']['mail']['class'] = Mailer::className();
             $config['components']['mail']['useTransport'] = $mailer->useTransport;
             $config['components']['mail']['transport']['class'] = 'Swift_SmtpTransport';
             $config['components']['mail']['transport']['host'] = $mailer->host;
             $config['components']['mail']['transport']['username'] = $mailer->username;
             $config['components']['mail']['transport']['password'] = $mailer->password;
             $config['components']['mail']['transport']['port'] = $mailer->port;
             $config['components']['mail']['transport']['encryption'] = $mailer->encryption;
             // Write config for future use
             $param['installer']['mail']['useTransport'] = $mailer->useTransport;
             $param['installer']['mail']['transport']['host'] = $mailer->host;
             $param['installer']['mail']['transport']['username'] = $mailer->username;
             $param['installer']['mail']['transport']['password'] = $mailer->password;
             $param['installer']['mail']['transport']['port'] = $mailer->port;
             $param['installer']['mail']['transport']['encryption'] = $mailer->encryption;
             Configuration::set($config);
             Configuration::setParam($param);
             return $this->redirect(Yii::$app->urlManager->createUrl('//installer/setup/init'));
         }
     } else {
         if (isset($param['installer']['mail']['transport']['host'])) {
             $mailer->host = $param['installer']['mail']['transport']['host'];
         }
         if (isset($param['installer']['mail']['transport']['username'])) {
             $mailer->username = $param['installer']['mail']['transport']['username'];
         }
         if (isset($param['installer']['mail']['transport']['password'])) {
             $mailer->password = $param['installer']['mail']['transport']['password'];
         }
         if (isset($param['installer']['mail']['transport']['port'])) {
             $mailer->port = $param['installer']['mail']['transport']['port'];
         }
         if (isset($param['installer']['mail']['transport']['encryption'])) {
             $mailer->encryption = $param['installer']['mail']['transport']['encryption'];
         }
     }
     return $this->render('mailer', ['model' => $mailer]);
 }
 public function actionAuthClient()
 {
     $model = new SettingsForm();
     $model->googleClientId = Yii::$app->config->get(Enum::GOOGLE_CLIENT_ID);
     $model->googleClientSecret = Yii::$app->config->get(Enum::GOOGLE_CLIENT_SECRET);
     $model->facebookClientId = Yii::$app->config->get(Enum::FACEBOOK_CLIENT_ID);
     $model->facebookClientSecret = Yii::$app->config->get(Enum::FACEBOOK_CLIENT_SECRET);
     $model->linkedInClientId = Yii::$app->config->get(Enum::LINKED_IN_CLIENT_ID);
     $model->linkedInClientSecret = Yii::$app->config->get(Enum::LINKED_IN_CLIENT_SECRET);
     $model->githubClientId = Yii::$app->config->get(Enum::GITHUB_CLIENT_ID);
     $model->githubClientSecret = Yii::$app->config->get(Enum::GITHUB_CLIENT_SECRET);
     $model->liveClientId = Yii::$app->config->get(Enum::LIVE_CLIENT_ID);
     $model->liveClientSecret = Yii::$app->config->get(Enum::LIVE_CLIENT_SECRET);
     $model->twitterConsumerKey = Yii::$app->config->get(Enum::TWITTER_CONSUMER_KEY);
     $model->twitterConsumerSecret = Yii::$app->config->get(Enum::TWITTER_CONSUMER_SECRET);
     $config = Configuration::get();
     if ($model->load(Yii::$app->request->post())) {
         Yii::$app->config->set(Enum::GOOGLE_CLIENT_ID, $model->googleClientId);
         Yii::$app->config->set(Enum::GOOGLE_CLIENT_SECRET, $model->googleClientSecret);
         Yii::$app->config->set(Enum::FACEBOOK_CLIENT_ID, $model->facebookClientId);
         Yii::$app->config->set(Enum::FACEBOOK_CLIENT_SECRET, $model->facebookClientSecret);
         Yii::$app->config->set(Enum::LINKED_IN_CLIENT_ID, $model->linkedInClientId);
         Yii::$app->config->set(Enum::LINKED_IN_CLIENT_SECRET, $model->linkedInClientSecret);
         Yii::$app->config->set(Enum::GITHUB_CLIENT_ID, $model->githubClientId);
         Yii::$app->config->set(Enum::GITHUB_CLIENT_SECRET, $model->githubClientSecret);
         Yii::$app->config->set(Enum::LIVE_CLIENT_ID, $model->liveClientId);
         Yii::$app->config->set(Enum::LIVE_CLIENT_SECRET, $model->liveClientSecret);
         Yii::$app->config->set(Enum::TWITTER_CONSUMER_KEY, $model->twitterConsumerKey);
         Yii::$app->config->set(Enum::TWITTER_CONSUMER_SECRET, $model->twitterConsumerSecret);
         $config['components']['authClientCollection']['class'] = Collection::className();
         if (!empty($model->googleClientId) && !empty($model->googleClientSecret)) {
             Yii::$app->config->set(Enum::GOOGLE_AUTH, GoogleOAuth::className());
             Yii::$app->config->set(Enum::GOOGLE_CLIENT_ID, $model->googleClientId);
             Yii::$app->config->set(Enum::GOOGLE_CLIENT_SECRET, $model->googleClientSecret);
             $config['components']['authClientCollection']['clients']['google']['class'] = GoogleOAuth::className();
             $config['components']['authClientCollection']['clients']['google']['clientId'] = $model->googleClientId;
             $config['components']['authClientCollection']['clients']['google']['clientSecret'] = $model->googleClientSecret;
         } else {
             Yii::$app->config->set(Enum::GOOGLE_AUTH, NULL);
             unset($config['components']['authClientCollection']['clients']['google']);
         }
         if (!empty($model->facebookClientId) && !empty($model->facebookClientSecret)) {
             Yii::$app->config->set(Enum::FACEBOOK_AUTH, Facebook::className());
             Yii::$app->config->set(Enum::FACEBOOK_CLIENT_ID, $model->facebookClientId);
             Yii::$app->config->set(Enum::FACEBOOK_CLIENT_SECRET, $model->facebookClientSecret);
             $config['components']['authClientCollection']['clients']['facebook']['class'] = Facebook::className();
             $config['components']['authClientCollection']['clients']['facebook']['clientId'] = $model->facebookClientId;
             $config['components']['authClientCollection']['clients']['facebook']['clientSecret'] = $model->facebookClientSecret;
         } else {
             Yii::$app->config->set(Enum::FACEBOOK_AUTH, NULL);
             unset($config['components']['authClientCollection']['clients']['facebook']);
         }
         if (!empty($model->linkedInClientId) && !empty($model->linkedInClientSecret)) {
             Yii::$app->config->set(Enum::LINKED_IN_AUTH, LinkedIn::className());
             Yii::$app->config->set(Enum::LINKED_IN_CLIENT_ID, $model->linkedInClientId);
             Yii::$app->config->set(Enum::LINKED_IN_CLIENT_SECRET, $model->linkedInClientSecret);
             $config['components']['authClientCollection']['clients']['linkedin']['class'] = LinkedIn::className();
             $config['components']['authClientCollection']['clients']['linkedin']['clientId'] = $model->linkedInClientId;
             $config['components']['authClientCollection']['clients']['linkedin']['clientSecret'] = $model->linkedInClientSecret;
         } else {
             Yii::$app->config->set(Enum::LINKED_IN_AUTH, NULL);
             unset($config['components']['authClientCollection']['clients']['linkedin']);
         }
         if (!empty($model->githubClientId) && !empty($model->githubClientSecret)) {
             Yii::$app->config->set(Enum::GITHUB_AUTH, GitHub::className());
             Yii::$app->config->set(Enum::GITHUB_CLIENT_ID, $model->githubClientId);
             Yii::$app->config->set(Enum::GITHUB_CLIENT_SECRET, $model->githubClientSecret);
             $config['components']['authClientCollection']['clients']['github']['class'] = GitHub::className();
             $config['components']['authClientCollection']['clients']['github']['clientId'] = $model->githubClientId;
             $config['components']['authClientCollection']['clients']['github']['clientSecret'] = $model->githubClientSecret;
         } else {
             Yii::$app->config->set(Enum::GITHUB_AUTH, NULL);
             unset($config['components']['authClientCollection']['clients']['github']);
         }
         if (!empty($model->liveClientId) && !empty($model->liveClientSecret)) {
             Yii::$app->config->set(Enum::LIVE_AUTH, Live::className());
             Yii::$app->config->set(Enum::LIVE_CLIENT_ID, $model->liveClientId);
             Yii::$app->config->set(Enum::LIVE_CLIENT_SECRET, $model->liveClientSecret);
             $config['components']['authClientCollection']['clients']['live']['class'] = Live::className();
             $config['components']['authClientCollection']['clients']['live']['clientId'] = $model->liveClientId;
             $config['components']['authClientCollection']['clients']['live']['clientSecret'] = $model->liveClientSecret;
         } else {
             Yii::$app->config->set(Enum::LIVE_AUTH, NULL);
             unset($config['components']['authClientCollection']['clients']['live']);
         }
         if (!empty($model->twitterConsumerKey) && !empty($model->twitterConsumerSecret)) {
             Yii::$app->config->set(Enum::TWITTER_AUTH, Twitter::className());
             Yii::$app->config->set(Enum::TWITTER_CONSUMER_KEY, $model->twitterConsumerKey);
             Yii::$app->config->set(Enum::TWITTER_CONSUMER_SECRET, $model->twitterConsumerSecret);
             $config['components']['authClientCollection']['clients']['twitter']['class'] = Twitter::className();
             $config['components']['authClientCollection']['clients']['twitter']['consumerKey'] = $model->twitterConsumerKey;
             $config['components']['authClientCollection']['clients']['twitter']['consumerSecret'] = $model->twitterConsumerSecret;
         } else {
             Yii::$app->config->set(Enum::TWITTER_AUTH, NULL);
             unset($config['components']['authClientCollection']['clients']['twitter']);
         }
         Configuration::set($config);
         Yii::$app->getSession()->setFlash('success', Yii::t('user', 'User module settings saved successfully'));
     }
     return $this->render('authClient', ['model' => $model]);
 }