Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-05-2011 18:04:28

missna04
Nouveau membre
Date d'inscription: 14-03-2011
Messages: 7

Vérification de la valeur d'un champ d'une table de base de donnée

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

 

#2 22-05-2011 21:52:28

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Vérification de la valeur d'un champ d'une table de base de donnée

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

 

#3 07-06-2011 22:00:58

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Vérification de la valeur d'un champ d'une table de base de donnée

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages