Hola gente, estoy estudiando este Framework que parece potente, pero me he quedado un pelin estancado en un tema , "el login de usuario". El tema es que leo el código y lo entiendo bastante bien, pero en concreto no comprendo del todo el código de modelo
LoginForm.php que es el que se encarga del login de los usuarios.
Pego el código para que se entienda mejor.
Código:
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe;
private $_identity;
/**
* Declares the validation rules.
* The rules state that username and password are required,
* and password needs to be authenticated.
*/
public function rules()
{
return array(
// username and password are required
array('username, password', 'required'),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate'),
);
}
/**
* Declares attribute labels.
*/
public function attributeLabels()
{
return array(
'rememberMe'=>'Remember me next time',
);
}
/**
* Authenticates the password.
* This is the 'authenticate' validator as declared in rules().
*/
public function authenticate($attribute,$params)
{
if(!$this->hasErrors())
{
$this->_identity=new UserIdentity($this->username,$this->password);
if(!$this->_identity->authenticate())
$this->addError('password','Incorrect username or password.');
}
}
/**
* Logs in the user using the given username and password in the model.
* @return boolean whether login is successful
*/
public function login()
{
if($this->_identity===null)
{
$this->_identity=new UserIdentity($this->username,$this->password);
$this->_identity->authenticate();
}
if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
{
$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
Yii::app()->user->login($this->_identity,$duration);
return true;
}
else
return false;
}
}
No entiendo muy bien en
rules() esta regla
array('password', 'authenticate'), porque el modelo tiene otro método
login() que realiza la misma comprobación de que el usuario es válido y crea una instancia
new UserIdentity.
¿Además por qué se le pasan a authenticate dos parmámetros $attribute y $params que nunca se usan?.
Gracias de antemano.