- LSldapObject : Modification de la méthode searchObject() pour prendre eventuellement
authorBenjamin Renard <brenard@easter-eggs.com>
Mon, 9 Mar 2009 13:14:37 +0000 (13:14 +0000)
committerBenjamin Renard <brenard@easter-eggs.com>
Mon, 9 Mar 2009 13:14:37 +0000 (13:14 +0000)
  un troisième paramètre : un LSformat du filtre de recherche composé avec la valeur
  du première argument.
- LSsession : Ajout de la possibilité de définir le filtre de recherche LDAP de l'objet
  utilisateur d'une personne se connectant. (authObjectFilter)
- config.inc.php : Ajout de la possibilité de s'authentifier avec son mail.

trunk/conf/config.inc.php
trunk/includes/class/class.LSldapObject.php
trunk/includes/class/class.LSsession.php

index d489b31..9d4cd55 100644 (file)
@@ -72,6 +72,7 @@ $GLOBALS['LSconfig'] = array(
       'cacheLSprofiles' => true,
       'cacheSearch' => true,
       'authObjectType' => 'LSeepeople',
+      'authObjectFilter' => '(|(uid=%{user})(mail=%{user}))',
       'authobject_pwdattr' => 'userPassword',
       'LSaccess' => array(
         'LSeepeople',
index 3bd1c3f..4e8f8dd 100644 (file)
@@ -929,17 +929,25 @@ class LSldapObject {
  
  
   /**
-   * Recherche un objet à partir de la valeur exact de son RDN
+   * Recherche un objet à partir de la valeur exact de son RDN ou d'un filtre de
+   * recherche LDAP sous la forme d'un LSformat qui sera construit avec la valeur
+   * de $name.
    * 
    * @author Benjamin Renard <brenard@easter-eggs.com>
    * 
-   * @param[in] $name string Valeur de son RDN
+   * @param[in] $name string Valeur de son RDN ou de la valeur pour composer le filtre
    * @param[in] $basedn string Le DN de base de la recherche
+   * @param[in] $filter string Le filtre de recherche de l'objet
    * 
    * @retval array Tableau d'objets correspondant au resultat de la recherche
    */
-  function searchObject($name,$basedn=NULL) {
-    $filter = $this -> config['rdn'].'='.$name; 
+  function searchObject($name,$basedn=NULL,$filter=NULL) {
+    if (!$filter) {
+      $filter = $this -> config['rdn'].'='.$name;
+    }
+    else {
+      $filter = getFData($filter,$name);
+    }
     return $this -> listObjects($filter,$basedn); 
   }
 
index 4a353ea..f1e3411 100644 (file)
@@ -373,7 +373,7 @@ class LSsession {
               }
             }
             if ($find) {
-              $result = $authobject -> searchObject($_POST['LSsession_user'],self :: $topDn);
+              $result = $authobject -> searchObject($_POST['LSsession_user'],self :: $topDn,self :: $ldapServer['authObjectFilter']);
               $nbresult=count($result);
             }
             if ($nbresult==0) {
@@ -525,7 +525,7 @@ class LSsession {
                   // Authentification réussi
                   self :: $LSuserObject = $result[0];
                   self :: $dn = $result[0]->getValue('dn');
-                  self :: $rdn = $_POST['LSsession_user'];
+                  self :: $rdn = $result[0]->getValue('rdn');
                   self :: loadLSprofiles();
                   self :: loadLSaccess();
                   $GLOBALS['Smarty'] -> assign('LSsession_username',self :: getLSuserObject() -> getDisplayName());