--- old/ecrire/auth/ldap.php 2017-06-08 21:58:17.000000000 +0200 +++ new/ecrire/auth/ldap.php 2017-06-10 02:54:02.687954143 +0200 @@ -171,24 +171,41 @@ $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ; $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']); + if (isset($GLOBALS['ldap_search'])) { + $search_query = str_replace("%user%", $login_search, $GLOBALS['ldap_search']); + $result = @ldap_search($ldap_link, $ldap_base, $search_query, array("dn")); + $info = @ldap_get_entries($ldap_link, $result); + // Ne pas accepter les resultats si plus d'une entree + // (on veut un attribut unique) - // Tenter une recherche pour essayer de retrouver le DN - foreach ($logins as $att) { - $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn")); - $info = @ldap_get_entries($ldap_link, $result); - // Ne pas accepter les resultats si plus d'une entree - // (on veut un attribut unique) + if (is_array($info) and $info['count'] == 1) { + $dn = $info[0]['dn']; + if (!$checkpass) { + return $dn; + } + if (@ldap_bind($ldap_link, $dn, $pass)) { + return $dn; + } + } + } else { + // Tenter une recherche pour essayer de retrouver le DN + foreach ($logins as $att) { + $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn")); + $info = @ldap_get_entries($ldap_link, $result); + // Ne pas accepter les resultats si plus d'une entree + // (on veut un attribut unique) - if (is_array($info) and $info['count'] == 1) { - $dn = $info[0]['dn']; - if (!$checkpass) { - return $dn; - } - if (@ldap_bind($ldap_link, $dn, $pass)) { - return $dn; - } - } - } + if (is_array($info) and $info['count'] == 1) { + $dn = $info[0]['dn']; + if (!$checkpass) { + return $dn; + } + if (@ldap_bind($ldap_link, $dn, $pass)) { + return $dn; + } + } + } + } if ($checkpass and !isset($dn)) { // Si echec, essayer de deviner le DN