/**
  * Registration user
  */
 public function actionRegistration()
 {
     Profile::$regMode = true;
     $model = new RegistrationForm();
     $profile = new Profile();
     $module = Module::getInstance();
     // ajax validator
     //        if (Yii::$app->request->isAjax) {
     //            if ($model->load(Yii::$app->request->post()) && $profile->load(Yii::$app->request->post())) {
     //                Yii::$app->response->format = Response::FORMAT_JSON;
     //                return ActiveForm::validateMultiple([$model, $profile]);
     //            }
     //        }
     if (Yii::$app->user->id) {
         $this->redirect($module->profileUrl);
     } else {
         if ($model->load(Yii::$app->request->post())) {
             $profile->load(Yii::$app->request->post());
             if ($model->validate() && $profile->validate()) {
                 $model->activkey = Module::encrypting(microtime() . $model->password);
                 $model->superuser = 0;
                 $model->status = $module->activeAfterRegister ? User::STATUS_ACTIVE : User::STATUS_NOACTIVE;
                 if ($model->save(false)) {
                     $profile->user_id = $model->id;
                     $profile->save(false);
                     if ($module->sendActivationMail) {
                         $url = Url::to(array_merge($module->activationUrl, ["activkey" => $model->activkey, "email" => $model->email]), true);
                         $activation_url = Html::a($url, $url);
                         Module::sendMail($model->email, Module::t("{site_name} account activation", ['site_name' => Yii::$app->name]), 'register', ['activation_url' => $activation_url]);
                     }
                     if (($module->loginNotActiv || $module->activeAfterRegister && $module->sendActivationMail == false) && $module->autoLogin) {
                         Yii::$app->user->login($model);
                         $this->redirect($module->returnUrl);
                     } else {
                         if (!$module->activeAfterRegister && !$module->sendActivationMail) {
                             Yii::$app->user->setFlash('success', Module::t("Thank you for your registration. Contact Admin to activate your account."));
                         } elseif ($module->activeAfterRegister && $module->sendActivationMail == false) {
                             Yii::$app->user->setFlash('success', Module::t("Thank you for your registration. Please {{login}}.", ['{{login}}' => Html::a(Module::t('Login'), $module->loginUrl)]));
                         } elseif ($module->loginNotActiv) {
                             Yii::$app->user->setFlash('success', Module::t("Thank you for your registration. Please check your email or login."));
                         } else {
                             Yii::$app->user->setFlash('success', Module::t("Thank you for your registration. Please check your email."));
                         }
                         return $this->refresh();
                     }
                 }
             } else {
                 $profile->validate();
             }
         }
         return $this->render('/user/registration', ['model' => $model, 'profile' => $profile]);
     }
 }
Example #2
0
 /** Encrypt password before saving to database */
 public function beforeSave($insert)
 {
     $this->password = Module::encrypting($this->password);
     return parent::beforeSave($insert);
 }
 /**
  * Change password
  */
 public function actionChangepassword()
 {
     ///**@var UserChangePassword $model*/
     $model = new UserChangePassword();
     if (Yii::$app->user->id) {
         if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ActiveForm::validate($model);
         }
         if ($model->load(Yii::$app->request->post())) {
             if ($model->validate()) {
                 $new_password = User::find()->notsafe()->andWhere(['id' => Yii::$app->user->id])->one();
                 $new_password->password = Module::encrypting($model->password);
                 $new_password->activkey = Module::encrypting(microtime() . $model->password);
                 $new_password->save();
                 Yii::$app->user->setFlash('success', Module::t("New password has been saved."));
                 $this->redirect(["profile"]);
             }
         }
         return $this->render('changepassword', ['model' => $model]);
     }
     return $this->redirect(Module::getInstance()->loginUrl);
 }