/** * Стартуем экшен сброса пароля * @param string $token - токен-сброса пароля * @throws CHttpException */ public function run($token) { 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!')); } // Если включено автоматическое восстановление пароля: if ((int) $module->autoRecoveryPassword === WebModule::CHOICE_YES) { if (Yii::app()->userManager->activatePassword($token)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'New password was sent to your email')); $this->controller->redirect(array('/user/account/backendlogin')); } else { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'Error when changing password!')); $this->controller->redirect(array('/user/account/recovery')); } } // Форма смены пароля: $changePasswordForm = new ChangePasswordForm(); // Получаем данные POST если таковые имеются: if (($data = Yii::app()->getRequest()->getPost('ChangePasswordForm')) !== null) { $changePasswordForm->setAttributes($data); // Проводим валидацию формы: if ($changePasswordForm->validate() && Yii::app()->userManager->activatePassword($token, $changePasswordForm->password)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Password recover successfully')); $this->controller->redirect(array('/user/account/backendlogin')); } } // Отрисовываем форму: $this->controller->render('changePassword', array('model' => $changePasswordForm)); }
public function run($code) { $recovery = RecoveryPassword::model()->with('user')->find('code = :code', array(':code' => $code)); if (!$recovery) { Yii::log(Yii::t('user', 'Код восстановления пароля {code} не найден!', array('{code}' => $code)), CLogger::LEVEL_ERROR, UserModule::$logCategory); Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('user', 'Код восстановления пароля не найден! Попробуйте еще раз!')); $this->controller->redirect(array('/user/account/recovery')); } // автоматическое восстановление пароля if (Yii::app()->getModule('user')->autoRecoveryPassword) { $newPassword = Registration::model()->generateRandomPassword(); $recovery->user->password = Registration::model()->hashPassword($newPassword, $recovery->user->salt); $transaction = Yii::app()->db->beginTransaction(); try { if ($recovery->user->save() && RecoveryPassword::model()->deleteAll('user_id = :user_id', array(':user_id' => $recovery->user->id))) { $transaction->commit(); $emailBody = $this->controller->renderPartial('application.modules.user.views.email.passwordAutoRecoverySuccessEmail', array('model' => $recovery->user, 'password' => $newPassword), true); Yii::app()->mail->send(Yii::app()->getModule('user')->notifyEmailFrom, $recovery->user->email, Yii::t('user', 'Успешное восстановление пароля!'), $emailBody); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('user', 'Новый пароль отправлен Вам на email!')); Yii::log(Yii::t('user', 'Успешное восстановление пароля!'), CLogger::LEVEL_ERROR, UserModule::$logCategory); $this->controller->redirect(array('/user/account/login')); } } catch (CDbException $e) { $transaction->rollback(); Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('user', 'Ошибка при смене пароля!')); Yii::log(Yii::t('user', 'Ошибка при автоматической смене пароля {error}!', array('{error}' => $e->getMessage())), CLogger::LEVEL_ERROR, UserModule::$logCategory); $this->controller->redirect(array('/user/account/recovery')); } } // выбор своего пароля $changePasswordForm = new ChangePasswordForm(); // если отправили фому с новым паролем if (Yii::app()->request->isPostRequest && isset($_POST['ChangePasswordForm'])) { $changePasswordForm->setAttributes($_POST['ChangePasswordForm']); if ($changePasswordForm->validate()) { $transaction = Yii::app()->db->beginTransaction(); try { // смена пароля пользователя $recovery->user->password = Registration::model()->hashPassword($changePasswordForm->password, $recovery->user->salt); // удалить все запросы на восстановление для данного пользователя if ($recovery->user->save() && RecoveryPassword::model()->deleteAll('user_id = :user_id', array(':user_id' => $recovery->user->id))) { $transaction->commit(); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('user', 'Пароль изменен!')); Yii::log(Yii::t('user', 'Успешная смена пароля для пользоателя {user}!', array('{user}' => $recovery->user->id)), CLogger::LEVEL_INFO, UserModule::$logCategory); $emailBody = $this->controller->renderPartial('application.modules.user.views.email.passwordRecoverySuccessEmail', array('model' => $recovery->user), true); Yii::app()->mail->send(Yii::app()->getModule('user')->notifyEmailFrom, $recovery->user->email, Yii::t('user', 'Успешное восстановление пароля!'), $emailBody); $this->controller->redirect(array('/user/account/login')); } } catch (CDbException $e) { $transaction->rollback(); Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('user', 'Ошибка при смене пароля!')); Yii::log(Yii::t('Ошибка при смене пароля {error}!', array('{error}' => $e->getMessage())), CLogger::LEVEL_ERROR, UserModule::$logCategory); $this->controller->redirect(array('/user/account/recovery')); } } } $this->controller->render('changePassword', array('model' => $changePasswordForm)); }
/** * Экшен смены пароля: * * @param int $id - record ID * * @return void */ public function actionChangepassword($id) { $model = $this->loadModel($id); $form = new ChangePasswordForm(); if (($data = Yii::app()->getRequest()->getPost('ChangePasswordForm')) !== null) { $form->setAttributes($data); if ($form->validate() && Yii::app()->userManager->changeUserPassword($model, $form->password)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Password was changed successfully')); $this->redirect(array('/user/userBackend/view', 'id' => $model->id)); } } $this->render('changepassword', array('model' => $model, 'changePasswordForm' => $form)); }
/** * Экшен смены пароля: * * @param int $id - record ID * * @return void */ public function actionChangepassword($id) { $model = $this->loadModel($id); $form = new ChangePasswordForm(); if (($data = Yii::app()->getRequest()->getPost('ChangePasswordForm')) !== null) { $form->setAttributes($data); if ($form->validate() && Yii::app()->userManager->changeUserPassword($model, $form->password)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Пароль успешно изменен!')); $this->redirect(Yii::app()->user->getState('prevUrl')); } } $this->render('changepassword', array('model' => $model, 'changePasswordForm' => $form)); }
public function actionChangepassword($id) { $model = $this->loadModel(); $form = new ChangePasswordForm(); if (Yii::app()->request->isPostRequest && !empty($_POST['ChangePasswordForm'])) { $form->setAttributes($_POST['ChangePasswordForm']); if ($form->validate() && $model->changePassword($form->password)) { $model->changePassword($form->password); Yii::app()->user->setFlash(YFlashMessages::NOTICE_MESSAGE, Yii::t('user', 'Пароль успешно изменен!')); $this->redirect(array('/user/default/view/', 'id' => $model->id)); } } $this->render('changepassword', array('model' => $model, 'changePasswordForm' => $form)); }
public function actionIndex() { $model = new ChangePasswordForm(); if (isset($_POST['ChangePasswordForm'])) { $model->setAttributes($_POST['ChangePasswordForm']); if ($model->validate()) { if ($model->changePassword()) { user()->setFlash(FlashConst::MESSAGE_SUCCESS, Yii::t('main', 'Пароль успешно изменен.')); $this->refresh(); } else { user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Произошла ошибка! Попробуйте повторить позже.')); } } } $this->render('//cabinet/change-password', array('model' => $model)); }
/** * Стартуем экшен сброса пароля * @param string $token - токен-сброса пароля * @throws CHttpException */ public function run($token) { if (Yii::app()->user->isAuthenticated()) { $this->controller->redirect(Yii::app()->user->returnUrl); } $module = Yii::app()->getModule('user'); // Если запрещено восстановление - печалька ;) if ($module->recoveryDisabled) { throw new CHttpException(404); } //Проверка токена $tokenModel = Yii::app()->userManager->tokenStorage->get($token, UserToken::TYPE_CHANGE_PASSWORD); if (null === $tokenModel) { throw new CHttpException(404); } // Если включено автоматическое восстановление пароля: if ((int) $module->autoRecoveryPassword === WebModule::CHOICE_YES) { if (Yii::app()->userManager->activatePassword($token, null, true)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Пароль отправлен на ваш E-mail')); $this->controller->redirect(array('/user/account/login')); } else { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'Ошибка восстановления пароля!')); $this->controller->redirect(array('/user/account/recovery')); } } // Форма смены пароля: $changePasswordForm = new ChangePasswordForm(); // Получаем данные POST если таковые имеются: if (($data = Yii::app()->getRequest()->getPost('ChangePasswordForm')) !== null) { $changePasswordForm->setAttributes($data); // Проводим валидацию формы: if ($changePasswordForm->validate() && Yii::app()->userManager->activatePassword($token, $changePasswordForm->password, false)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Пароль успешно изменен')); $this->controller->redirect(array('/user/account/login')); } } // Отрисовываем форму: $this->controller->render('changePassword', array('model' => $changePasswordForm)); }
public function actionChangePassword() { if (Yii::app()->user->isGuest) { Yii::app()->request->redirect(basePath('')); } //do validation $model = new ChangePasswordForm(); $model->setAttributes(array('password_change' => $_POST['password_change'], 'password_new' => $_POST['password_new'], 'password_new_confirm' => $_POST['password_new_confirm'])); $model->validate(); $errors = $model->getErrors(); if (count($errors) != 0) { Yii::app()->user->setFlash('changepassworderror', true); foreach ($errors as $key => $value) { Yii::app()->user->setFlash($key, $value); } Yii::app()->request->redirect(basePath('app/myprofile')); return; } $user = User::model()->findByPk(Yii::app()->user->getState('id')); if ($user->password != $_POST['password_change']) { Yii::app()->user->setFlash('password_change', array('0' => 'Invalid password')); Yii::app()->request->redirect(basePath('app/myprofile')); return; } //update user's email $user->password = $model->password_new; $user->update(); //update session state $userControl = new userControl(); $userControl->update(); //redirect user to my profile page Yii::app()->request->redirect(basePath('app/properties')); }