Blame view

models/LoginForm.php 2.83 KB
ea1a19bc   Yarik   Testing
1
2
3
4
5
6
7
8
9
10
11
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  <?php

      namespace artweb\artbox\models;

      

      use Yii;

      use yii\base\Model;

      

      /**

       * Login form

       */

      class LoginForm extends Model

      {

          

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

                  }

              }

          }

          

          /**

           * 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;

              }

          }

          

          /**

           * 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'),

              ];

          }

      }