public function run() { // Незачем выполнять последующие действия // для авторизованного пользователя: if (Yii::app()->user->isAuthenticated()) { $this->controller->redirect(Yii::app()->getUser()->getReturnUrl()); } $module = Yii::app()->getModule('user'); // Если восстановление отключено - ошбочка ;) if ($module->recoveryDisabled) { throw new CHttpException(404, Yii::t('UserModule.user', 'requested page was not found!')); } // Новая форма восстановления пароля: $form = new RecoveryForm(); if (($data = Yii::app()->getRequest()->getPost('RecoveryForm')) !== null) { $form->setAttributes($data); if ($form->validate() && Yii::app()->userManager->passwordRecovery($form->email)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Letter with password recovery instructions was sent on email which you choose during register')); $this->controller->redirect(array('/user/account/backendlogin')); } else { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'Password recovery error.')); } } $this->controller->render('recovery', array('model' => $form)); }
public function run() { if (Yii::app()->user->isAuthenticated()) { $this->controller->redirect(Yii::app()->user->returnUrl); } $module = Yii::app()->getModule('user'); // Если восстановление отключено - ошбочка ;) if ($module->recoveryDisabled) { throw new CHttpException(404, Yii::t('UserModule.user', 'requested page was not found!')); } // Новая форма восстановления пароля: $form = new RecoveryForm(); if (($data = Yii::app()->getRequest()->getPost('RecoveryForm')) !== null) { $form->setAttributes($data); if ($form->validate()) { if (Yii::app()->userManager->passwordRecovery($form->email)) { Yii::app()->getUser()->setFlash(YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Letter with password recovery instructions was sent on email which you choose during register')); $this->getController()->redirect(['/user/account/login']); } Yii::app()->getUser()->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'Password recovery error.')); $this->getController()->redirect(['/user/account/recovery']); } } $this->getController()->render('recovery', ['model' => $form]); }
/** * @dataProvider invalidDataProvider */ public function testInvalid($scenario, $attributes, $errors) { $form = new RecoveryForm($scenario); $form->userIdentityClass = 'UserIdentity'; $form->setAttributes($attributes); $this->assertFalse($form->validate()); $this->assertEquals($errors, $form->getErrors()); }
public function run() { $form = new RecoveryForm(); if (Yii::app()->request->isPostRequest && isset($_POST['RecoveryForm'])) { $form->setAttributes($_POST['RecoveryForm']); if ($form->validate()) { $user = $form->getUser(); // если пароль должен быть сгенерирован автоматически if (Yii::app()->getModule('user')->autoRecoveryPassword) { $recovery = new RecoveryPassword(); $recovery->setAttributes(array('user_id' => $user->id, 'code' => $recovery->generateRecoveryCode($user->id))); if ($recovery->save()) { // отправить письмо с сылкой на сброс пароля Yii::log(Yii::t('user', 'Заявка на автоматическое восстановление пароля.'), CLogger::LEVEL_INFO, UserModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('user', 'На указанный email отправлено письмо с инструкцией по восстановлению пароля!')); $emailBody = $this->controller->renderPartial('passwordAutoRecoveryEmail', array('model' => $recovery), true); Yii::app()->mail->send(Yii::app()->getModule('user')->notifyEmailFrom, $user->email, Yii::t('user', 'Восстановление пароля!'), $emailBody); $this->controller->redirect(array('/user/account/login')); } else { Yii::log(Yii::t('user', 'Ощибка при создании заявки на автоматическое восстановление пароля'), CLogger::LEVEL_ERROR, UserModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('user', 'При восстановлении пароля произошла ошибка! Повторите попытку позже!!!')); $this->controller->redirect(array('/user/account/recovery')); } } else { $recovery = new RecoveryPassword(); $recovery->setAttributes(array('user_id' => $user->id, 'code' => $recovery->generateRecoveryCode($user->id))); if ($recovery->save()) { Yii::log(Yii::t('user', 'Заявка на восстановление пароля.'), CLogger::LEVEL_INFO, UserModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('user', 'На указанный email отправлено письмо с инструкцией по восстановлению пароля!')); // отправить email уведомление $emailBody = $this->controller->renderPartial('passwordRecoveryEmail', array('model' => $recovery), true); Yii::app()->mail->send(Yii::app()->getModule('user')->notifyEmailFrom, $user->email, Yii::t('user', 'Восстановление пароля!'), $emailBody); $this->controller->redirect(array('/user/account/recovery')); } else { Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('user', 'При восстановлении пароля произошла ошибка!')); Yii::log($e->getMessage(), CLogger::LEVEL_ERROR, UserModule::$logCategory); $this->controller->redirect(array('/user/account/recovery')); } } } } $this->controller->render('recovery', array('model' => $form)); }
public function run() { $module = Yii::app()->getModule('user'); // Если восстановление отключено - ошбочка ;) if ($module->recoveryDisabled) { throw new CHttpException(404, Yii::t('UserModule.user', 'requested page was not found!')); } // Новая форма восстановления пароля: $form = new RecoveryForm(); if (($data = Yii::app()->getRequest()->getPost('RecoveryForm')) !== null) { $form->setAttributes($data); if ($form->validate()) { if (Yii::app()->userManager->passwordRecovery($form->email)) { Yii::app()->getUser()->setFlash(YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Письмо с действиями по восстановлению пароля отправлены на email, который Вы указали при регистрации')); $this->getController()->redirect(['/user/account/login']); } Yii::app()->getUser()->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'Ошибка восстановления пароля.')); $this->getController()->redirect(['/user/account/recovery']); } } $this->getController()->render('recovery', ['model' => $form]); }
public function actionVerify() { $model = new RecoveryForm(); $model->scenario = 'verify'; if (!isset($_GET['activationKey'])) { throw new CHttpException(400, Yii::t('UsrModule.usr', 'Activation key is missing.')); } $model->setAttributes($_GET); if ($model->validate() && $model->getIdentity()->verifyEmail()) { Yii::app()->user->setFlash('success', Yii::t('UsrModule.usr', 'Your email address has been successfully verified.')); } else { Yii::app()->user->setFlash('error', Yii::t('UsrModule.usr', 'Failed to verify your email address.')); } $this->redirect(array(Yii::app()->user->isGuest ? 'login' : 'profile')); }