Blame view

common/models/LoginForm.php 1.66 KB
abf1649b   andryeyev   Чистая установка ...
1
2
  <?php
  namespace common\models;
abf1649b   andryeyev   Чистая установка ...
3
4
  use Yii;
  use yii\base\Model;
abf1649b   andryeyev   Чистая установка ...
5
  /**
280e92c2   Dmitryi   авторизация через...
6
   * LoginForm is the model behind the login form.
abf1649b   andryeyev   Чистая установка ...
7
8
9
10
11
12
   */
  class LoginForm extends Model
  {
      public $username;
      public $password;
      public $rememberMe = true;
280e92c2   Dmitryi   авторизация через...
13
14
      
      private $_user = false;
abf1649b   andryeyev   Чистая установка ...
15
      /**
280e92c2   Dmitryi   авторизация через...
16
       * @return array the validation rules.
abf1649b   andryeyev   Чистая установка ...
17
18
19
       */
      public function rules()
      {
280e92c2   Dmitryi   авторизация через...
20
          return array(
abf1649b   andryeyev   Чистая установка ...
21
              // username and password are both required
280e92c2   Dmitryi   авторизация через...
22
              array(array('username', 'password'), 'required'),
abf1649b   andryeyev   Чистая установка ...
23
              // password is validated by validatePassword()
280e92c2   Dmitryi   авторизация через...
24
25
26
27
              array('password', 'validatePassword'),
              // rememberMe must be a boolean value
              array('rememberMe', 'boolean'),
          );
abf1649b   andryeyev   Чистая установка ...
28
      }
abf1649b   andryeyev   Чистая установка ...
29
30
31
      /**
       * Validates the password.
       * This method serves as the inline validation for password.
abf1649b   andryeyev   Чистая установка ...
32
       */
280e92c2   Dmitryi   авторизация через...
33
      public function validatePassword()
abf1649b   andryeyev   Чистая установка ...
34
      {
280e92c2   Dmitryi   авторизация через...
35
36
37
          $user = $this->getUser();
          if (!$user || !$user->validatePassword($this->password)) {
              $this->addError('password', 'Incorrect username or password.');
abf1649b   andryeyev   Чистая установка ...
38
39
          }
      }
abf1649b   andryeyev   Чистая установка ...
40
41
      /**
       * Logs in a user using the provided username and password.
abf1649b   andryeyev   Чистая установка ...
42
43
44
45
46
       * @return boolean whether the user is logged in successfully
       */
      public function login()
      {
          if ($this->validate()) {
280e92c2   Dmitryi   авторизация через...
47
              return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
abf1649b   andryeyev   Чистая установка ...
48
49
50
51
          } else {
              return false;
          }
      }
abf1649b   andryeyev   Чистая установка ...
52
53
54
55
56
      /**
       * Finds user by [[username]]
       *
       * @return User|null
       */
280e92c2   Dmitryi   авторизация через...
57
      private function getUser()
abf1649b   andryeyev   Чистая установка ...
58
      {
280e92c2   Dmitryi   авторизация через...
59
          if ($this->_user === false) {
abf1649b   andryeyev   Чистая установка ...
60
61
              $this->_user = User::findByUsername($this->username);
          }
abf1649b   andryeyev   Чистая установка ...
62
63
          return $this->_user;
      }
280e92c2   Dmitryi   авторизация через...
64
  }