Blame view

common/models/LoginForm.php 2.83 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
          

          public $password;

          

          public $rememberMe = true;

          

          public $email;

          

8af13427   Yarik   For leha commit.
19
          private $user;

5c2eb7c8   Yarik   Big commit almost...
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
          

          /**

           * @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)

          {

c70f24ea   Yarik   For Leha commit.
61
              if (!$this->hasErrors()) {

5c2eb7c8   Yarik   Big commit almost...
62
                  $user = $this->getUser();

c70f24ea   Yarik   For Leha commit.
63
                  if (!$user || !$user->validatePassword($this->password)) {

5c2eb7c8   Yarik   Big commit almost...
64
65
                      $this->addError($attribute, 'Incorrect username or password.');

                  }

d8c1a2e0   Yarik   Big commit artbox
66
67
              }

          }

5c2eb7c8   Yarik   Big commit almost...
68
69
70
          

          /**

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

c70f24ea   Yarik   For Leha commit.
71
           *

5c2eb7c8   Yarik   Big commit almost...
72
73
74
75
           * @return boolean whether the user is logged in successfully

           */

          public function login()

          {

c70f24ea   Yarik   For Leha commit.
76
              if ($this->validate()) {

5c2eb7c8   Yarik   Big commit almost...
77
78
79
80
81
                  

                  return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);

              } else {

                  return false;

              }

d8c1a2e0   Yarik   Big commit artbox
82
          }

5c2eb7c8   Yarik   Big commit almost...
83
84
85
          

          /**

           * Finds user by [[username]]

c70f24ea   Yarik   For Leha commit.
86
           *

5c2eb7c8   Yarik   Big commit almost...
87
88
89
90
           * @return User|null

           */

          protected function getUser()

          {

c70f24ea   Yarik   For Leha commit.
91
              if ($this->user === null) {

8af13427   Yarik   For leha commit.
92
                  $this->user = Customer::findByEmail($this->email);

5c2eb7c8   Yarik   Big commit almost...
93
94
              }

              

8af13427   Yarik   For leha commit.
95
              return $this->user;

5c2eb7c8   Yarik   Big commit almost...
96
97
98
99
100
101
102
103
104
105
          }

          

          /**

           * @inheritdoc

           */

          public function attributeLabels()

          {

              return [

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

              ];

d8c1a2e0   Yarik   Big commit artbox
106
          }

d8c1a2e0   Yarik   Big commit artbox
107
      }