Ejemplo n.º 1
0
 /**
  * @param User $user
  * @param $email
  * @param bool|true $confirm
  * @return bool
  */
 public function changeUserEmail(User $user, $email, $confirm = true)
 {
     if ($user->email == $email) {
         return true;
     }
     $transaction = Yii::app()->getDb()->beginTransaction();
     try {
         $user->email_confirm = User::EMAIL_CONFIRM_NO;
         $user->email = $email;
         if ($user->save()) {
             if ($confirm && ($token = $this->tokenStorage->createEmailVerifyToken($user)) === false) {
                 throw new CException(Yii::t('UserModule.user', 'Error change Email!'));
             }
             Yii::app()->eventManager->fire(UserEvents::SUCCESS_EMAIL_CHANGE, new UserEmailConfirmEvent($token, $user));
             $transaction->commit();
             return true;
         }
         throw new CException(Yii::t('UserModule.user', 'Error change Email!'));
     } catch (Exception $e) {
         $transaction->rollback();
         return false;
     }
 }
Ejemplo n.º 2
0
 /**
  * Отправить письмо для подтверждения email:
  *
  * @param integer $id - ID пользователя
  *
  * @throws CHttpException
  *
  * @return void
  */
 public function actionVerifySend($id = null)
 {
     Yii::app()->getRequest()->getIsAjaxRequest() === true || $this->badRequest();
     if ($id === null || ($user = $this->loadModel($id)) === null) {
         throw new CHttpException(404, Yii::t('UserModule.user', 'requested page was not found!'));
     } elseif ($user->email_confirm) {
         return $this->badRequest();
     }
     $tokenStorage = new TokenStorage();
     if ($token = $tokenStorage->createEmailVerifyToken($user)) {
         Yii::app()->notify->send($user, Yii::t('UserModule.user', 'Email verification'), '//user/email/needEmailActivationEmail', array('token' => $token));
         Yii::app()->ajax->success(Yii::t('UserModule.user', 'Sent!'));
     }
     Yii::app()->ajax->failure();
 }