Issues (441)

site/models/PasswordResetRequestForm.php (1 issue)

1
<?php
2
namespace site\models;
3
4
use yii\base\Model;
5
use \common\interfaces\UserInterface;
6
/**
7
 * Password reset request form
8
 */
9
class PasswordResetRequestForm extends Model
10
{
11
  public $email;
12
  private $user;
13
14
  public function __construct(UserInterface $user, $config = []) {
15
    $this->user = $user;
16
    parent::__construct($config);
17
  }
18
19
  /**
20
   * @inheritdoc
21
   */
22
  public function rules()
23
  {
24
    return [
25
      ['email', 'filter', 'filter' => 'strtolower'],
26
      ['email', 'filter', 'filter' => 'trim'],
27
      ['email', 'required'],
28
      ['email', 'email'],
29
    ];
30
  }
31
  /**
32
   * Sends an email with a link, for resetting the password.
33
   *
34
   * @return boolean whether the email was send
35
   */
36
  public function sendEmail()
37
  {
38
    /* @var $user User */
39
    $user = $this->user::find()->where([
40
      'email' => $this->email,
41
    ])->one();
42
43
    if ($user) {
0 ignored issues
show
$user is of type site\models\User, thus it always evaluated to true.
Loading history...
44
      if (!$user->isTokenCurrent($user->password_reset_token)) {
45
        $user->generatePasswordResetToken();
46
      }
47
      if ($user->save()) {
48
        return \Yii::$app->mailer->compose('passwordResetToken', ['user' => $user])
49
          ->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])
50
          ->setTo($this->email)
51
          ->setSubject('Password reset for ' . \Yii::$app->name)
52
          ->send();
53
      }
54
    }
55
    return false;
56
  }
57
}
58
59