sfGuardUser vérifier si le compte est actif?
Salut je créer des comptes avec une page d'inscription et je fais une vérification par email pour activer le compte.
Quand le compte est encore inactif j'essaie de me connecter et sa marche.
Je vais donc dans le code source sfGuardValidatorUser.class.php et je vois qu'il check que le pass et le login.
Je rajoute donc une petite méthode checkActivation().
Mais le seul problème c'est que je n'arrive pas à personnaliser l'erreur. Il faudrait que je rajoute si le compte est inactif, afficher le compte est inactif.
Alors voilà le code en question :
class sfGuardValidatorUser extends sfValidatorBase
{
public function configure($options = array(), $messages = array())
{
$this->addOption('username_field', 'username');
$this->addOption('password_field', 'password');
$this->addOption('throw_global_error', false);
$this->setMessage('invalid', 'The username and/or password is invalid ou le compte est inactif.');
//$this->setMessage('required', 'compte inactif');
}
protected function doClean($values)
{
$username = isset($values[$this->getOption('username_field')]) ? $values[$this->getOption('username_field')] : '';
$password = isset($values[$this->getOption('password_field')]) ? $values[$this->getOption('password_field')] : '';
// user exists?
if ($user = Doctrine::getTable('sfGuardUser')->findOneByUsername($username))
{
if($user->checkActivation())//ma new funcntion
{
if ($user->checkPassword($password))
{
return array_merge($values, array('user' => $user));
}
}
}
if ($this->getOption('throw_global_error'))
{
throw new sfValidatorError($this, 'invalid');
}
throw new sfValidatorErrorSchema($this, array($this->getOption('username_field') => new sfValidatorError($this, 'invalid')));
}
}
Mais je ne sais pas ce qu'il faut rajoute. Si tu saurais m'aider se serait très cool!
Merci !!