Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour
J'ai mis en place un formulaire d'inscription et de login .
Apres inscription l'utilisateur reçois un e-mail de validation. Lorsqu' il active son compte le champs "active" de la table membres contient la valeur 1.
Je désire faire une fonction qui vérifie si le champs active est a 1 avant de permettre un utilisateur de se connecter.
Si ce champ est a 0 , l'authentification ne doit pas se faire.
Comment pourrais être cette fonction. Voila ma fonction login qui fonctionne correctement
public function loginAction() {
$form = new Form_Login ( );
$this->view->formLogin = $form;
if (($this->_request->isPost ())) {
$formData = $this->_request->getPost ();
if ($form->isValid ( $formData )) {
$email = $form->getValue ( 'email' );
$password = $form->getValue ( 'password' );
$authAdapter = new Zend_Auth_Adapter_DbTable ( Zend_Db_Table::getDefaultAdapter () );
$authAdapter->setTableName ( 'membres' )
->setIdentityColumn ( 'email' )
->setCredentialColumn ( 'password' )
->setCredentialTreatment ( 'MD5(?)' )
->setIdentity ( $email )
->setCredential ( $password );
$authAuthenticate = $authAdapter->authenticate ();
if ($authAuthenticate->isValid ()) {
$storage = Zend_Auth::getInstance ()->getStorage ();
$storage->write ( $authAdapter->getResultRowObject ( null, 'password' ) );
$this->_helper->redirector ( 'index', 'profil' );
} else {
$form->addError ( 'Il n existe pas d utilisateur avec ce mot de passe' );
}
}
}
$this->render ( 'index' );
}
Hors ligne
As-tu envisagé de créer une classe qui hériterait de Zend_Auth_Adapter_DbTable, et qui redéfinirait la méthode "authenticate()", pour tenir compte de la vérification sur le champ "active" de la table ?
Hors ligne
pour faire simple il est possible de ré-configurer ton adaptateur en lui passant en paramètre des informations de ton user(email, pass...) tout en lui notifiant que actif='1' comme suit:
$authAdapter = new Zend_Auth_Adapter_DbTable ( Zend_Db_Table::getDefaultAdapter () ,'membres','email','password', 'AND actif="1"', 'md5(?)');
$authAdapter ->setIdentity ( $email )
->setCredential ( $password );
Hors ligne
Pages: 1