/** * Send password reset email * @return boolean */ public function sendEmail() { $user = User::findOne(['active' => true, 'email' => $this->email]); if ($user !== null) { return $user->sendResetPasswordEmail(); } return false; }
/** * Validation rules * @return array */ public function rules() { return [[['email', 'password', 'verifyCode'], 'required'], ['email', 'email'], ['password', 'string', 'min' => 4], ['confirm', 'compare', 'compareAttribute' => 'password'], [['firstName', 'lastName'], 'string', 'max' => 50], ['verifyCode', 'captcha'], ['mailing', 'boolean'], ['email', function ($attribute, $params) { if (User::find()->where(['email' => $this->email])->count() > 0) { $this->addError($attribute, Yii::t('user', 'The entered e-mail is already in use.')); } }]]; }
/** * Constructor * @param string $token * @param array $config * @return void */ public function __construct($token, $config = []) { if (empty($token) || !is_string($token)) { throw new InvalidParamException('Password reset token cannot be blank.'); } $this->_user = User::findByPasswordResetToken($token); if (!$this->_user) { throw new InvalidParamException('Wrong password reset token.'); } parent::__construct($config); }
/** * E-mail confirm * @param string $token E-mail confirm token * @return void */ public function actionConfirm($token) { $user = User::findByConfirmToken($token); if (!$user) { throw new InvalidParamException(Yii::t('user', 'Link invalid. Perhaps, e-mail has already been confirmed or the waiting period has expired.')); } $user->confirmed = true; $user->removeConfirmToken(); if ($user->save()) { Yii::$app->getSession()->setFlash('success', Yii::t('user', 'Your e-mail is successfully confirmed.')); } else { Yii::$app->getSession()->setFlash('error', Yii::t('user', 'An error occurred while trying to confirm the e-mail.')); } return $this->redirect(['settings/index']); }