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 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)); }
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)); }
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 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()); } } }
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')); }