]>
Commit | Line | Data |
---|---|---|
1 | --- old/ecrire/auth/ldap.php 2017-06-08 21:58:17.000000000 +0200 | |
2 | +++ new/ecrire/auth/ldap.php 2017-06-10 02:54:02.687954143 +0200 | |
3 | @@ -171,24 +171,41 @@ | |
4 | $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ; | |
5 | ||
6 | $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']); | |
7 | + if (isset($GLOBALS['ldap_search'])) { | |
8 | + $search_query = str_replace("%user%", $login_search, $GLOBALS['ldap_search']); | |
9 | + $result = @ldap_search($ldap_link, $ldap_base, $search_query, array("dn")); | |
10 | + $info = @ldap_get_entries($ldap_link, $result); | |
11 | + // Ne pas accepter les resultats si plus d'une entree | |
12 | + // (on veut un attribut unique) | |
13 | ||
14 | - // Tenter une recherche pour essayer de retrouver le DN | |
15 | - foreach ($logins as $att) { | |
16 | - $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn")); | |
17 | - $info = @ldap_get_entries($ldap_link, $result); | |
18 | - // Ne pas accepter les resultats si plus d'une entree | |
19 | - // (on veut un attribut unique) | |
20 | + if (is_array($info) and $info['count'] == 1) { | |
21 | + $dn = $info[0]['dn']; | |
22 | + if (!$checkpass) { | |
23 | + return $dn; | |
24 | + } | |
25 | + if (@ldap_bind($ldap_link, $dn, $pass)) { | |
26 | + return $dn; | |
27 | + } | |
28 | + } | |
29 | + } else { | |
30 | + // Tenter une recherche pour essayer de retrouver le DN | |
31 | + foreach ($logins as $att) { | |
32 | + $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn")); | |
33 | + $info = @ldap_get_entries($ldap_link, $result); | |
34 | + // Ne pas accepter les resultats si plus d'une entree | |
35 | + // (on veut un attribut unique) | |
36 | ||
37 | - if (is_array($info) and $info['count'] == 1) { | |
38 | - $dn = $info[0]['dn']; | |
39 | - if (!$checkpass) { | |
40 | - return $dn; | |
41 | - } | |
42 | - if (@ldap_bind($ldap_link, $dn, $pass)) { | |
43 | - return $dn; | |
44 | - } | |
45 | - } | |
46 | - } | |
47 | + if (is_array($info) and $info['count'] == 1) { | |
48 | + $dn = $info[0]['dn']; | |
49 | + if (!$checkpass) { | |
50 | + return $dn; | |
51 | + } | |
52 | + if (@ldap_bind($ldap_link, $dn, $pass)) { | |
53 | + return $dn; | |
54 | + } | |
55 | + } | |
56 | + } | |
57 | + } | |
58 | ||
59 | if ($checkpass and !isset($dn)) { | |
60 | // Si echec, essayer de deviner le DN |