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());
 }
Exemple #4
0
 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'));
 }