]> git.immae.eu Git - perso/Immae/Config/Nix/NUR.git/blob - pkgs/webapps/spip/spip_ldap_patch.patch
Initial commit published for NUR
[perso/Immae/Config/Nix/NUR.git] / pkgs / webapps / spip / spip_ldap_patch.patch
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