/** * @param $token * @return bool */ public function isTokenValid(CsrfToken $token) { if (!$this->storage->hasToken($token->getId())) { return false; } return $this->storage->getToken($token->getId()) == $token->getValue(); }
/** * @param $token * @return bool */ public function verifyEmail($token) { $transaction = Yii::app()->getDb()->beginTransaction(); try { $tokenModel = $this->tokenStorage->get($token, UserToken::TYPE_EMAIL_VERIFY); if (null === $tokenModel) { Yii::app()->eventManager->fire(UserEvents::FAILURE_EMAIL_CONFIRM, new UserEmailConfirmEvent($token)); return false; } $userModel = User::model()->active()->findByPk($tokenModel->user_id); if (null === $userModel) { Yii::app()->eventManager->fire(UserEvents::FAILURE_EMAIL_CONFIRM, new UserEmailConfirmEvent($token)); return false; } $userModel->email_confirm = User::EMAIL_CONFIRM_YES; if ($this->tokenStorage->activate($tokenModel) && $userModel->save()) { Yii::app()->eventManager->fire(UserEvents::SUCCESS_EMAIL_CONFIRM, new UserEmailConfirmEvent($token, $userModel)); $transaction->commit(); return true; } } catch (Exception $e) { $transaction->rollback(); Yii::app()->eventManager->fire(UserEvents::FAILURE_EMAIL_CONFIRM, new UserEmailConfirmEvent($token)); } return false; }
/** * Отправить письмо для подтверждения 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(); }
public function refreshToken() { $this->token = $this->token_refresher->refreshToken($this->token); $this->token_storage->saveToken($this->token); }