Cita:
Iniciado por carlos_belisario ya viste lo que hay en protected/components/UserIdentity.php?? ahí esta el método de autenticate, es ahí donde esta el método para hacer la autenticación, el model los parámetros $attribute, $params son por convención para crear los validators
http://www.yiiframework.com/wiki/168...lidation-rule/ mas información.
Hola de nuevo, mira eso todo lo entiendo , llevo unos días leyendo sobre los componentes, controladores y modelos en YiiFw , y entiendo bastante bien como funcionan; pero lo que no comprendo es lo que pregunto en mi primer post (pegarlo todo de nuevo creo que sería demasiado pesado para el resto de personas que sigan este hilo). Voy a seguir con mis "inevstigaciones" y si llego a alguna conclusión prometo lo contaré por aquí.
Después de estar un ratillo nadando en el código, he llegado a la siguiente conclusión:
El login del usuario lo "carga" el controlador
SiteController con el
action "login" que ha su vez crea una instancia del modelo
LoginForm ($model=new LoginForm;).
MI DUDA: Según veo en el módelo
LoginForm se lleva a cabo una serie de tareas (métodos del modelo):
1.
Código:
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'), //Esto llama al método authenticate del modelo
);
}
Y 2.
Código:
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;
}
Si nos fijamos, ambos hacen uso de authenticate() cosa que no entiendo , primero porque en rules ya se realiza dicha autentificación, y además dicho método authenticate tiene dos parámetro que nunca se le pasan:
Código:
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.');
}
}
¿De donde salen los parámetros $attribute,$params del método authenticate ?
¿Alguna idea de que se me esta escapando para comprender esto?.
Mil gracias de antemano