aboutsummaryrefslogtreecommitdiff
path: root/pkgs/webapps/spip/spip_ldap_patch.patch
blob: 653c9098a84d47b34980469b8060e2290a26a947 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
--- 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