Blame view

common/models/LoginForm.php 2.41 KB
1755c393   Yarik   Basic template in...
1
  <?php
0ffdb7f9   Yarik   Merge branch 'mas...
2
      namespace common\models;
9576f402   Yarik   Namespaces and al...
3
4
  
      use artbox\core\models\User;
0ffdb7f9   Yarik   Merge branch 'mas...
5
6
7
      use Yii;
      use yii\base\Model;
      
1755c393   Yarik   Basic template in...
8
      /**
0ffdb7f9   Yarik   Merge branch 'mas...
9
       * Login form
1755c393   Yarik   Basic template in...
10
       */
0ffdb7f9   Yarik   Merge branch 'mas...
11
      class LoginForm extends Model
1755c393   Yarik   Basic template in...
12
      {
0ffdb7f9   Yarik   Merge branch 'mas...
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
          public $username;
          public $password;
          public $rememberMe = true;
          
          private $_user;
          
          /**
           * @inheritdoc
           */
          public function rules()
          {
              return [
                  // username and password are both required
                  [
                      [
                          'username',
                          'password',
                      ],
                      'required',
                  ],
                  // rememberMe must be a boolean value
                  [
                      'rememberMe',
                      'boolean',
                  ],
                  // password is validated by validatePassword()
                  [
                      'password',
                      'validatePassword',
                  ],
              ];
          }
          
          /**
           * Validates the password.
           * This method serves as the inline validation for password.
           *
           * @param string $attribute the attribute currently being validated
           * @param array  $params    the additional name-value pairs given in the rule
           */
          public function validatePassword($attribute, $params)
          {
              if (!$this->hasErrors()) {
                  $user = $this->getUser();
                  if (!$user || !$user->validatePassword($this->password)) {
                      $this->addError($attribute, 'Incorrect username or password.');
                  }
1755c393   Yarik   Basic template in...
60
61
              }
          }
0ffdb7f9   Yarik   Merge branch 'mas...
62
63
64
65
66
67
68
69
70
71
72
73
74
          
          /**
           * Logs in a user using the provided username and password.
           *
           * @return bool whether the user is logged in successfully
           */
          public function login()
          {
              if ($this->validate()) {
                  return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
              } else {
                  return false;
              }
1755c393   Yarik   Basic template in...
75
          }
0ffdb7f9   Yarik   Merge branch 'mas...
76
77
78
79
80
81
82
83
84
85
86
87
88
          
          /**
           * Finds user by [[username]]
           *
           * @return User|null
           */
          protected function getUser()
          {
              if ($this->_user === null) {
                  $this->_user = User::findByUsername($this->username);
              }
              
              return $this->_user;
1755c393   Yarik   Basic template in...
89
          }
1755c393   Yarik   Basic template in...
90
      }