class UserIdentity extends CUserIdentity
{
const ERROR_USERNAME_INACTIVE=67;
private $_id;
public function authenticate()
{
$username=strtolower($this->username);
$user=User::model()->find('LOWER(username)=?',array($username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if(!$user->validatePassword($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else if($user->active == 0)
$this->errorCode=self::ERROR_USERNAME_INACTIVE;
else
{
$this->_id=$user->id;
$this->username=$user->username;
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode==self::ERROR_NONE;
}
public function getId()
{
return $this->_id;
}
}
However, on my view it returns Incorrect username or password instead of ERROR_USERNAME_INACTIVE message, what should i do to rectify this error?
in your LoginForm
model in auuthenticate function you need to add error based on the error_code..
public function authenticate($attribute,$params)
{
if(!$this->hasErrors())
{
$this->_identity=new UserIdentity($this->email,$this->password);
if(!$this->_identity->authenticate()) {
if($this->_identity->errorCode === UserIdentity::ERROR_USERNAME_INACTIVE)
$this->addError('username','My custom error');
else
$this->addError('password','Incorrect email or password.');
}
}
}