Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/02/2013, 03:40
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Duda de novato en YiiFramework

Cita:
Iniciado por carlos_belisario Ver Mensaje
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
__________________
Videotutoriales de Drupal

Última edición por Dundee; 27/02/2013 a las 04:30 Razón: Añadir información