Blame view

common/models/LoginForm.php 2.8 KB
d8c1a2e0   Yarik   Big commit artbox
1
  <?php

5c2eb7c8   Yarik   Big commit almost...
2
3
4
5
6
      namespace common\models;

      

      use Yii;

      use yii\base\Model;

      

d8c1a2e0   Yarik   Big commit artbox
7
      /**

5c2eb7c8   Yarik   Big commit almost...
8
       * Login form

d8c1a2e0   Yarik   Big commit artbox
9
       */

5c2eb7c8   Yarik   Big commit almost...
10
      class LoginForm extends Model

d8c1a2e0   Yarik   Big commit artbox
11
      {

5c2eb7c8   Yarik   Big commit almost...
12
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
60
61
62
63
64
65
          

          public $password;

          

          public $rememberMe = true;

          

          public $email;

          

          private $_user;

          

          /**

           * @inheritdoc

           */

          public function rules()

          {

              return [

                  // username and password are both required

                  [

                      [

                          'email',

                          'password',

                      ],

                      'required',

                  ],

                  [

                      [ 'email' ],

                      'email',

                  ],

                  // 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.');

                  }

d8c1a2e0   Yarik   Big commit artbox
66
67
              }

          }

5c2eb7c8   Yarik   Big commit almost...
68
69
70
71
72
73
74
75
76
77
78
79
80
          

          /**

           * Logs in a user using the provided username and password.

           * @return boolean 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;

              }

d8c1a2e0   Yarik   Big commit artbox
81
          }

5c2eb7c8   Yarik   Big commit almost...
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
          

          /**

           * Finds user by [[username]]

           * @return User|null

           */

          protected function getUser()

          {

              if($this->_user === NULL) {

                  $this->_user = Customer::findByEmail($this->email);

              }

              

              return $this->_user;

          }

          

          /**

           * @inheritdoc

           */

          public function attributeLabels()

          {

              return [

                  'rememberMe' => Yii::t('app', 'rememberMe'),

              ];

d8c1a2e0   Yarik   Big commit artbox
104
          }

d8c1a2e0   Yarik   Big commit artbox
105
      }