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 string 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 string $email ''

Method Details

Hide inherited methods

rules() public method

public rules ( )

                public function rules(): array
{
    return [
        ['email', 'trim'],
        ['email', 'required'],
        ['email', 'email'],
        ['email', 'exist',
            'targetClass' => User::class,
            '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 ( \yii\mail\MailerInterface $mailer, string $supportEmail, string $appName )
$mailer \yii\mail\MailerInterface

The mailer component.

$supportEmail string

The support email address.

$appName string

The application name.

return boolean

Whether the email was sent.

                public function sendEmail(MailerInterface $mailer, string $supportEmail, string $appName): bool
{
    $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 $mailer
        ->compose(
            ['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'],
            ['user' => $user],
        )
        ->setFrom([$supportEmail => $appName . ' robot'])
        ->setTo($this->email)
        ->setSubject('Password reset for ' . $appName)
        ->send();
}