CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 10-11-2014 14:27:43

moimoibis
Forêt noire
Date d'inscription: 05-04-2013
Messages: 126

2 fonctions de login différentes

Bonjour, j'ai une application avec une fonction de login qui est déjà en place. Ma fonction de login s'effectue par un LDAP, j'ai donc créé un Component Auth personnalisé.

J'ai ma fonction de login qui s'exécute correctement quand je passe par ma page de login. L’utilisation de ce login se fait par l'appel de cette fonction ($this->Auth->login()).

Mais voilà, je souhaite maintenant avoir une deuxième fonction de login. Sur une page l'utilisateur se logera avec le LDAP, et sur une autre page l'utilisateur sera toujours logué par le LDAP mais par un autre processus.

Ma question est comment créer deux fonctions de login et comment les appeler? Puisque $this->Auth->login() exécute la fonction authenticate de mon Component Auth perso?

Hors ligne

 

#2 10-11-2014 16:05:09

spout
Cooker
Date d'inscription: 18-12-2010
Messages: 1899

Re: 2 fonctions de login différentes

Tu peux définir plusieurs "Authentication handlers" sans soucis:
http://book.cakephp.org/2.0/en/core-lib … n-handlers

Hors ligne

 

#3 10-11-2014 16:17:19

moimoibis
Forêt noire
Date d'inscription: 05-04-2013
Messages: 126

Re: 2 fonctions de login différentes

Merci je n’avais pas vu ce passage. Par contre il est bien décrit comment appeler plusieurs authenticate. Mais je ne vois pas comment écrire mes 2 fonctions de login différemment dans mon Component Auth
Voila le code de mon component actuellement :

Code: php

  1. App::uses('BaseAuthenticate', 'Controller/Component/Auth');
  2.  
  3. class LdapAuthenticate extends BaseAuthenticate {
  4.     public function authenticate(CakeRequest $request, CakeResponse $response) {
  5.     $username=$request->data["Users"]["username"];
  6.       $pwd=$request->data["Users"]["password"];
  7.       $ldap = ldap_connect("ldap://..........");
  8.     ldap_set_option ($ldap, LDAP_OPT_REFERRALS, 0);
  9.     ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
  10.  
  11.     $bind = @ldap_bind($ldap, $username, $pwd);
  12.     if ($bind && $pwd!="") {
  13.           //CakeLog::write('debug', "loggé");
  14.           $ldap_dn ="DC=world,DC=pcm,DC=local";
  15.           $filter = "(&(objectClass=user)(samaccountname=".$username.")(cn=*))";
  16.           $justthese = array("cn","mail","givenname","distinguishedname","memberof");
  17.       $sr=ldap_search($ldap, $ldap_dn, $filter,$justthese);
  18.       $info = ldap_get_entries($ldap, $sr);
  19.       ldap_close($ldap);
  20.       return $info;
  21.       } else {
  22.         ldap_close($ldap);
  23.           return false;
  24.       }
  25.     }
  26. }

Et l'appel dans le before filter de mon appController

Code: php

  1. function beforeFilter(){
  2.        $this->Auth->authenticate = array('Ldap');
  3.        $this->Auth->authorize = array('Controller');    
  4.     }

Hors ligne

 

#4 11-11-2014 10:04:54

spout
Cooker
Date d'inscription: 18-12-2010
Messages: 1899

Re: 2 fonctions de login différentes

La méthode login reste la même. C'est le authenticate qui change.

Hors ligne

 

#5 11-11-2014 10:12:09

moimoibis
Forêt noire
Date d'inscription: 05-04-2013
Messages: 126

Re: 2 fonctions de login différentes

Ah ok. En fait il me faut deux classes component avec chacune une fonction authenticate. Et la deuxième classe authenticate ne s’appellera que si l'authentification de la première n'a pas fonctionnée.
Merci

Hors ligne

 

Pied de page des forums

Propuls� par FluxBB
Traduction par FluxBB.fr