/** * 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]); } }
public function actionRecovery() { /**@var Module $module*/ $module = Yii::$app->controller->module; $form = new UserRecoveryForm(); if (Yii::$app->user->id) { $this->redirect($module->returnUrl); } $email = $this->r->get('email'); $activkey = $this->r->get('activkey'); if ($email && $activkey) { $form2 = new UserChangePassword(); $find = User::find()->notsafe()->andWhere(['email' => $email])->one(); if (isset($find) && $find->activkey == $activkey) { if ($form2->load(Yii::$app->request->post())) { if ($form2->validate()) { $find->password = $module->encrypting($form2->password); $find->activkey = Yii::$app->security->generateRandomString(); //$module->encrypting(microtime().$form2->password); if ($find->status == 0) { $find->status = 1; } $find->save(); Yii::$app->user->setFlash('success', Module::t("New password has been saved.")); return $this->redirect($module->loginUrl); } } return $this->render('recoverpassword', ['form' => $form2]); } else { Yii::$app->user->setFlash('danger', Module::t("Incorrect recovery link.")); return $this->redirect($module->recoveryUrl); } } if ($form->load($this->r->post())) { if ($form->validate()) { $user = User::find()->notsafe()->findbyPk($form->user_id)->one(); $url = Url::to(array_merge($module->recoveryUrl, ["activkey" => $user->activkey, "email" => $user->email]), true); $activation_url = Html::a($url, $url); $subject = Module::t("{site_name} password recovery.", ['site_name' => Yii::$app->name]); $mail = Module::sendMail($user->email, $subject, 'recover', ['activation_url' => $activation_url]); if ($mail) { Yii::$app->user->setFlash('success', Module::t("Please check your email. An activation instructions was sent to your email address.")); } else { Yii::$app->user->setFlash('danger', Module::t("Oops! There was a problem with sending activation email.")); } return $this->refresh(); } } return $this->render('recovery', ['form' => $form]); }