Me respondo a mi mismo. Acabo de caer en la cuenta de que el método login del modelo
loginForm llama a dos métodos distintos con el mismo nombre:
1.
En rules(): en este caso hace referencia al método authenticate de la misma clase
Código:
array('password', 'authenticate'),
2.
En login(): en este caso hace referencia al método authenticate de la clase
UserIdentity
Código:
$this->_identity=new UserIdentity($this->username,$this->password);
$this->_identity->authenticate();
Y parece ser que en este método se altera el número de parámetros que se le pasan, es decir se hace un
overriding del mismo.
Ahora me surgen más dudas, ya que el método authenticate de la clase
UserIdentity consulta la contraseña de Gii que no se que tiene que ver con todo esto (ya que Gii lo he utilizado para crear el crude la aplicación , pero no se que pinta su contraseña en esto), la verdad que estoy un poco hecho un lio.
Metódo
authenticate() de
UserIdentity
Código:
class UserIdentity extends CUserIdentity
{
/**
* Authenticates a user.
* @return boolean whether authentication succeeds.
*/
public function authenticate()
{
$password=Yii::app()->getModule('gii')->password;
if($password===null)
throw new CException('Please configure the "password" property of the "gii" module.');
else if($password===false || $password===$this->password)
$this->errorCode=self::ERROR_NONE;
else
$this->errorCode=self::ERROR_UNKNOWN_IDENTITY;
return !$this->errorCode;
}
}