9 * LoginForm is the model behind the login form.
11 * @property User|null $user This property is read-only.
14 class LoginForm extends Model
18 public $rememberMe = true;
20 private $_user = false;
24 * @return array the validation rules.
26 public function rules()
29 // Имя пользователя и пароль. Ода обязательные.
30 [['username', 'password'], 'required'],
31 // Запомнить должен быть логическим
32 ['rememberMe', 'boolean'],
33 // пароль проверяется через validatePassword()
34 ['password', 'validatePassword'],
40 * This method serves as the inline validation for password.
42 * @param string $attribute the attribute currently being validated
43 * @param array $params the additional name-value pairs given in the rule
45 public function validatePassword($attribute, $params)
47 if (!$this->hasErrors()) {
48 $user = $this->getUser();
50 if (!$user || !$user->validatePassword($this->password)) {
51 $this->addError($attribute, Yii::t('app', 'Incorrect username or password.'));
56 public function attributeLabels()
59 'username' => Yii::t('app', 'User name'),
60 'password' => Yii::t('app', 'Password'),
61 'rememberMe' => Yii::t('app', 'Remember Me'),
66 * Logs in a user using the provided username and password.
67 * @return bool whether the user is logged in successfully
69 public function login()
71 if ($this->validate()) {
72 return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
78 * Finds user by [[username]]
82 public function getUser()
84 if ($this->_user === false) {
85 $this->_user = User::findByUsername($this->username);