Class frontend\models\PasswordResetRequestForm

Inheritancefrontend\models\PasswordResetRequestForm » yii\base\Model
Source Code https://github.com/yiisoft/yii2-app-advanced/blob/master/frontend/models/PasswordResetRequestForm.php

Password reset request form

Public Properties

Hide inherited properties

Property Type Description Defined By
$email frontend\models\PasswordResetRequestForm

Public Methods

Hide inherited methods

Method Description Defined By
rules() frontend\models\PasswordResetRequestForm
sendEmail() Sends an email with a link, for resetting the password. frontend\models\PasswordResetRequestForm

Property Details

Hide inherited properties

$email public property
public $email null

Method Details

Hide inherited methods

rules() public method

public void rules ( )

                public function rules()
{
    return [
        ['email', 'trim'],
        ['email', 'required'],
        ['email', 'email'],
        ['email', 'exist',
            'targetClass' => '\common\models\User',
            'filter' => ['status' => User::STATUS_ACTIVE],
            'message' => 'There is no user with this email address.'
        ],
    ];
}

            
sendEmail() public method

Sends an email with a link, for resetting the password.

public boolean sendEmail ( )
return boolean

Whether the email was send

                public function sendEmail()
{
    /* @var $user User */
    $user = User::findOne([
        'status' => User::STATUS_ACTIVE,
        'email' => $this->email,
    ]);
    if (!$user) {
        return false;
    }
    
    if (!User::isPasswordResetTokenValid($user->password_reset_token)) {
        $user->generatePasswordResetToken();
        if (!$user->save()) {
            return false;
        }
    }
    return Yii::$app
        ->mailer
        ->compose(
            ['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'],
            ['user' => $user]
        )
        ->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot'])
        ->setTo($this->email)
        ->setSubject('Password reset for ' . Yii::$app->name)
        ->send();
}