/**
  * Стартуем экшен сброса пароля
  * @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));
 }
Ejemplo n.º 2
0
 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));
 }
Ejemplo n.º 3
0
 /**
  * Экшен смены пароля:
  *
  * @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));
 }
Ejemplo n.º 5
0
 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));
 }
Ejemplo n.º 8
0
 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'));
 }