Created
January 18, 2018 22:58
-
-
Save calcio/66d22dba5aa86fb2da2ca3e53e69e657 to your computer and use it in GitHub Desktop.
Modelo responsável pelos métodos de Login
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace app\modules\admin\models; | |
use Yii; | |
use yii\base\Model; | |
/** | |
* LoginForm is the model behind the login form. | |
* | |
* @property User|null $user This property is read-only. | |
* | |
*/ | |
class LoginForm extends Model | |
{ | |
public $username; | |
public $password; | |
public $rememberMe = true; | |
private $_user = false; | |
/** | |
* @return array the validation rules. | |
*/ | |
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.'); | |
} | |
} | |
} | |
/** | |
* Logs in a user using the provided username and password. | |
* @return bool 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); | |
} | |
return false; | |
} | |
/** | |
* Finds user by [[username]] | |
* | |
* @return User|null | |
*/ | |
public function getUser() | |
{ | |
if ($this->_user === false) { | |
$this->_user = User::findByUsername($this->username); | |
} | |
return $this->_user; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment