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;
}