示例#1
0
 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]);
 }
示例#3
0
 /**
  * @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());
 }
示例#4
0
 public function actionRestaurar()
 {
     $model = new RecoveryForm();
     if (isset($_POST['RecoveryForm'])) {
         Yii::log('submit -> ' . print_r($_POST, true));
         $model->attributes = $_POST['RecoveryForm'];
         $idmiembro = $model->buscaEmailMiembro($model->email);
         if ($model->validate()) {
             $model->enviarCorreo($idmiembro);
         }
     }
     $this->render('restaurar', array('model' => $model));
 }
示例#5
0
 public function actionRecovery()
 {
     $form = new RecoveryForm();
     if ($this->request->isPostRequest) {
         $form->attributes = $_POST['RecoveryForm'];
         if ($form->validate()) {
             $user = Identity::model()->findByAttributes(array('identity' => $form->email, 'type' => Identity::TYPE_EMAIL))->userAccount;
             $this->module->resetPassword($user);
             Yii::app()->user->setFlash('success', 'New password had been sent to your email address.');
             $this->redirect(array($this->module->loginUrl));
         }
     }
     $this->render('recovery', array('model' => $form));
 }
 /**
  * Форма восстановления пароля
  */
 public function actionRecovery()
 {
     $form = new RecoveryForm();
     if (isset($_POST['RecoveryForm'])) {
         $form->attributes = $_POST['RecoveryForm'];
         if ($form->validate()) {
             $model = User::model()->find('email=?', array($form->email));
             $model->recovery_code = $this->genpass(32);
             $model->update(array('recovery_code'));
             $this->sendResetLink($model);
             $this->render('recoverySend');
             return;
         }
     }
     $this->render('recoveryForm', array('model' => $form));
 }
示例#7
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));
 }
示例#8
0
 public function actionRecover($key = null)
 {
     $modelRecovery = new RecoveryForm();
     if (empty($key)) {
         $email = Yii::app()->request->getPost('email');
         $model = User::model()->find('email LIKE ("' . $email . '")');
         if ($model) {
             //Генерация ключа для восстановления пароля
             $key = $this->genpass();
             $subject = "Восстановление пароля на сайте " . SITE_NAME_FULL;
             $body = "На сайте " . SITE_NAME_FULL . " был произведен запрос на восстановление пароля.</br>\n                Для восстановления пароля <a href='" . SITE_NAME_FULL . "/admin/user/login/recover?key=" . $key . "'>перейдите по ссылке</a></br>\n                Если это были не Вы, то проигнорируйте это сообщение.";
             $this->sendEmail($email, $subject, $body);
             //Yii::app()->mailer->send(array('email'=>$email, 'subject'=>$subject, 'body'=>$body));
             $sql = "UPDATE {{user}} SET  `recovery_password_at` = NOW(), `recovery_code` = '" . $key . "' WHERE  `id`=" . $model->id . ";";
             Yii::app()->db->createCommand($sql)->query();
             echo 'На указаный электронный адрес отправлено письмо с инструкцией по восстановлению пароля';
         } else {
             echo 'Пользователь с таким электронным адресом не найден!';
         }
         Yii::app()->end();
     } else {
         //Перешли по ссылке  с ключем
         $model = User::model()->find('recovery_code ="' . $key . '"');
         if (!$model) {
             echo 'Не верный ключ!';
             die;
         }
         $this->render('restore', array('model' => $modelRecovery));
     }
     if (isset($_POST['RecoveryForm'])) {
         $modelRecovery->attributes = $_POST['RecoveryForm'];
         if ($modelRecovery->validate()) {
             $sql = "UPDATE {{user}} SET  `password` = '" . md5($modelRecovery->password) . "', `recovery_password_at` = NULL, `recovery_code` = NULL WHERE  `id`=" . $model->id . ";";
             Yii::app()->db->createCommand($sql)->query();
             $this->redirect("/");
         } else {
             print_r($modelRecovery->hasErrors());
         }
     }
 }
示例#9
0
 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]);
 }
示例#10
0
 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'));
 }