IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

Authentification avec Zend_Auth avec un champ activation


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut Authentification Zend_Auth avec un champ activation
    Bonjour,
    je viens de réaliser un tuto d'authentification avec Zend_Auth dont le code principale est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
     
    $dbAdapter = Zend_Registry::get('db');
    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
    $authAdapter->setTableName('users');
     
    $authAdapter->setIdentityColumn('username');
    $authAdapter->setCredentialColumn('password');
     
    $authAdapter->setIdentity($username);
    $authAdapter->setCredential($password);
     
     
    $auth = Zend_Auth::getInstance();
    $result = $auth->authenticate($authAdapter);
    Le code fonctionne bien mais j'aurais une question. Admettons que dans mon authentification je souhaite en même temps checker le user, password et un champ actif pour savoir si le compte est actif ou pas ? Que dois-je implementer. J'ai lu dans la doc cet exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter,
     'username',
    'password',
    'AND actif="true"');
    De mon côté mon champ actif est soit vide ou possedant une clé d'activation donc j'ai fais ceci mais ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter,
     'username',
    'password',
    'AND activation=""');
    Si quelqu'un saurait m'orienter ? merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Hello,

    Je sais pas où tu as trouvé cet exemple mais la doc dit que le 4ème param est un traitement à effectuer sur le credential, style hashage ou cryptage.

    Sinon, dans ton cas je ne vois pas comment tu pourrais faire sans étendre l'adapter pour accepter par exemple un Zend_Db_Select

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Merci Patbator pour ta réponse. Le tuto que j'ai utilisé est le suivant

    http://r-benyacoub.developpez.com/tu...?page=methodes

    Par contre ce qui m'embête c'est que l'authentification se fait que sur le champ username et password. Moi je voudrais en plus vérifier si le compte est actif. Pour cela j'ai un champ activation. S'il est vide c'est que le compte est actif mais je ne sais pas comment l'implémenter dans le tuto. Sinon ensuite j'ai regardé la doc de zend. Et c'est dans Zend_Auth que j'ai trouvé ceci

    http://framework.zend.com/manual/fr/...r.dbtable.html Voir utilisation avancée par l'exemple.

    Donc à mon niveau j'ai adapté mon code en mettant ceci mais ça ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    $adapter = new Zend_Auth_Adapter_DbTable($db,
    'utilisateurs',
    'login',
    'password',
    'AND activation != ""');

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Ok, vu l'exemple avancé ça devrai passer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $adapter = new Zend_Auth_Adapter_DbTable($db,
    'utilisateurs',
    'login',
    'password',
    'activation != ""');

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Ca marche pas

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Eurêka j'ai trouvé !!!!

    Voilà si quelqu'un d'autres rencontre le même soucis, voici la solution.
    Premièrement il faut bien passer dans l'adapter le champ activation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $adapter = new Zend_Auth_Adapter_DbTable($db,
    'utilisateurs',
    'login',
    'password',
    '? AND activation = ""');
    Ne pas oublier le ? et le AND sinon ça marche pas ! On demande donc à l'adapter de récupérer dans la table utilisateur le champ login, password mais aussi activation qui doit être vide. Ensuite il faut "seter" tout ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $authAdapter->setIdentityColumn('login');
    $authAdapter->setCredentialColumn('password');
    $authAdapter->setCredentialTreatment('? AND activation= ""');
    La solution est donc de placer cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $authAdapter->setCredentialTreatment('? AND activation= ""');
    Ainsi la vérification se fait sur login, password et aussi maintenant sur activation qui doit être vide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Authentification sur IRC avec Active directory
    Par Lekno dans le forum IRC / mIRC
    Réponses: 0
    Dernier message: 21/01/2014, 14h57
  2. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41
  3. UPDATE d'une table avec test d'un champ d'une autre table
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2004, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo