Blame view

backend/models/LoginForm.php 2.72 KB
d8c1a2e0   Yarik   Big commit artbox
1
  <?php
c70f24ea   Yarik   For Leha commit.
2
3
4
5
6
7
      namespace backend\models;
      
      use common\models\User;
      use Yii;
      use yii\base\Model;
      
d8c1a2e0   Yarik   Big commit artbox
8
      /**
c70f24ea   Yarik   For Leha commit.
9
       * Login form
d8c1a2e0   Yarik   Big commit artbox
10
       */
c70f24ea   Yarik   For Leha commit.
11
      class LoginForm extends Model
d8c1a2e0   Yarik   Big commit artbox
12
      {
c70f24ea   Yarik   For Leha commit.
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.');
                  }
d8c1a2e0   Yarik   Big commit artbox
60
61
              }
          }
c70f24ea   Yarik   For Leha commit.
62
63
64
65
66
67
68
69
70
71
72
73
74
          
          /**
           * 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
75
          }
c70f24ea   Yarik   For Leha commit.
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
          
          /**
           * Finds user by [[username]]
           *
           * @return User|null
           */
          protected function getUser()
          {
              if ($this->user === null) {
                  $this->user = User::findByUsername($this->username);
              }
              return $this->user;
          }
          
          /**
           * @inheritdoc
           */
          public function attributeLabels()
          {
              return [
                  'username' => 'Имя пользователя',
                  'password' => 'Пароль',
                  'rememberMe' => 'Запомнить пароль',
              ];
d8c1a2e0   Yarik   Big commit artbox
100
          }
d8c1a2e0   Yarik   Big commit artbox
101
      }