Commit 49f325e20691e5a115b73f925b799b544541284a
1 parent
2a6a6d62
Exists in
master
and in
2 other branches
LDAP refactorisation && optimisation (5)
- LdapConnectionsTable.php/getAllLdapUsers() remplacé par getAllLdapUsersNEW - LDAP refactor progressif pour remettre le mode LDAP authentifié (pour CRAL)
Showing
2 changed files
with
51 additions
and
36 deletions
Show diff stats
README.md
@@ -53,13 +53,11 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -53,13 +53,11 @@ Logiciel testé et validé sur les configurations suivantes : | ||
53 | 53 | ||
54 | VERSION ACTUELLE | 54 | VERSION ACTUELLE |
55 | 55 | ||
56 | -Date: 22/02/2019 | ||
57 | -Version: 2.10.18 | 56 | +Date: 25/02/2019 |
57 | +Version: 2.10.19 | ||
58 | Author: EP | 58 | Author: EP |
59 | - LDAP refactorisation && optimisation (4) | ||
60 | - - LdapConnectionsTable.php/searchLdap() simplification : | ||
61 | - - suppression getUserAttributes() | ||
62 | - - suppression getLdap1UserOrAllUsersAttributes() | 59 | + LDAP refactorisation && optimisation (5) |
60 | + - LdapConnectionsTable.php/getAllLdapUsers() remplacé par getAllLdapUsersNEW | ||
63 | - LDAP refactor progressif pour remettre le mode LDAP authentifié (pour CRAL) | 61 | - LDAP refactor progressif pour remettre le mode LDAP authentifié (pour CRAL) |
64 | 62 | ||
65 | IMPORTANT: | 63 | IMPORTANT: |
src/Model/Table/LdapConnectionsTable.php
@@ -8,9 +8,12 @@ DONE: | @@ -8,9 +8,12 @@ DONE: | ||
8 | - 1) remplacer ldapAuthentication() par ldapAuthenticationNEW() | 8 | - 1) remplacer ldapAuthentication() par ldapAuthenticationNEW() |
9 | - 2) remplacer getUserAttributes() par getLdap1UserOrAllUsersAttributes() | 9 | - 2) remplacer getUserAttributes() par getLdap1UserOrAllUsersAttributes() |
10 | - 3) virer getLdap1UserOrAllUsersAttributes() et merger son code dans la seule fonction qui l'appelle : searchLdap() | 10 | - 3) virer getLdap1UserOrAllUsersAttributes() et merger son code dans la seule fonction qui l'appelle : searchLdap() |
11 | +- 4) virer getUserAttributes() et getLdap1UserOrAllUsersAttributes() | ||
12 | + | ||
13 | +- 5) getAllLdapUsersNEW() pour remplacer getAllLdapUsers() | ||
11 | 14 | ||
12 | TODO: | 15 | TODO: |
13 | -- 4) getAllLdapUsersNEW() pour remplacer getAllLdapUsers() | 16 | +- ajouter just_these ? |
14 | - TableRegistry::get() à remplacer par TableRegistry::getTableLocator()->get() | 17 | - TableRegistry::get() à remplacer par TableRegistry::getTableLocator()->get() |
15 | 18 | ||
16 | * | 19 | * |
@@ -231,7 +234,7 @@ class LdapConnectionsTable extends AppTable | @@ -231,7 +234,7 @@ class LdapConnectionsTable extends AppTable | ||
231 | * @return $users_fetched or FALSE | 234 | * @return $users_fetched or FALSE |
232 | */ | 235 | */ |
233 | // REAL or FAKE LDAP | 236 | // REAL or FAKE LDAP |
234 | - public function getAllLdapUsers() | 237 | + public function getAllLdapUsersOLD() |
235 | { | 238 | { |
236 | try { | 239 | try { |
237 | if ($this->checkConfiguration()) { | 240 | if ($this->checkConfiguration()) { |
@@ -261,7 +264,7 @@ class LdapConnectionsTable extends AppTable | @@ -261,7 +264,7 @@ class LdapConnectionsTable extends AppTable | ||
261 | * @return $users_fetched or FALSE | 264 | * @return $users_fetched or FALSE |
262 | */ | 265 | */ |
263 | // REAL or FAKE LDAP | 266 | // REAL or FAKE LDAP |
264 | - public function getAllLdapUsersNEW() | 267 | + public function getAllLdapUsers() |
265 | { | 268 | { |
266 | try { | 269 | try { |
267 | if ($this->checkConfiguration()) { | 270 | if ($this->checkConfiguration()) { |
@@ -300,7 +303,7 @@ class LdapConnectionsTable extends AppTable | @@ -300,7 +303,7 @@ class LdapConnectionsTable extends AppTable | ||
300 | // Noter que $user_fetched peut etre egal a FALSE (si rien trouvé) | 303 | // Noter que $user_fetched peut etre egal a FALSE (si rien trouvé) |
301 | return $users_fetched; | 304 | return $users_fetched; |
302 | } | 305 | } |
303 | - } | 306 | + } |
304 | catch (Exception $e) {} | 307 | catch (Exception $e) {} |
305 | 308 | ||
306 | // Pb, rien trouvé | 309 | // Pb, rien trouvé |
@@ -309,7 +312,7 @@ class LdapConnectionsTable extends AppTable | @@ -309,7 +312,7 @@ class LdapConnectionsTable extends AppTable | ||
309 | 312 | ||
310 | 313 | ||
311 | 314 | ||
312 | - | 315 | + /* |
313 | // REAL LDAP only | 316 | // REAL LDAP only |
314 | // TODO: avirer, VIEUX CODE, à remplacer par getLdap1UserOrAllUsersAttributes() | 317 | // TODO: avirer, VIEUX CODE, à remplacer par getLdap1UserOrAllUsersAttributes() |
315 | // $userName = login | 318 | // $userName = login |
@@ -323,33 +326,32 @@ class LdapConnectionsTable extends AppTable | @@ -323,33 +326,32 @@ class LdapConnectionsTable extends AppTable | ||
323 | //ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | 326 | //ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); |
324 | $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); | 327 | $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); |
325 | return ldap_get_entries($ldapConnection, $results); | 328 | return ldap_get_entries($ldapConnection, $results); |
326 | - /* | 329 | + /STAR |
327 | } else | 330 | } else |
328 | return array( | 331 | return array( |
329 | $this->getFakeLdapUser($userName) | 332 | $this->getFakeLdapUser($userName) |
330 | ); | 333 | ); |
331 | - */ | 334 | + STAR/ |
332 | } | 335 | } |
333 | } catch (Exception $e) {} | 336 | } catch (Exception $e) {} |
334 | 337 | ||
335 | return false; | 338 | return false; |
336 | } | 339 | } |
340 | + */ | ||
337 | 341 | ||
338 | 342 | ||
339 | 343 | ||
340 | /* | 344 | /* |
341 | - CALL | ||
342 | - $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; | ||
343 | - */ | 345 | + //CALL : $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; |
344 | 346 | ||
345 | // REAL LDAP only | 347 | // REAL LDAP only |
346 | - /* | 348 | + /ST |
347 | * @param string $ldapConnection | 349 | * @param string $ldapConnection |
348 | * @param string $filter | 350 | * @param string $filter |
349 | * @param array $just_these | 351 | * @param array $just_these |
350 | * @param string $userName (= login) => for FAKE LDAP only | 352 | * @param string $userName (= login) => for FAKE LDAP only |
351 | * @return $res = ldap search result (1 user or all users attributes) or FALSE | 353 | * @return $res = ldap search result (1 user or all users attributes) or FALSE |
352 | - */ | 354 | + ST/ |
353 | //public function getUserAttributes($userName, $ldapConnection='', $filter='', $just_these=[]) | 355 | //public function getUserAttributes($userName, $ldapConnection='', $filter='', $just_these=[]) |
354 | //public function getUserAttributes($ldapConnection='', $filter='', $just_these=[], $userName=NULL) | 356 | //public function getUserAttributes($ldapConnection='', $filter='', $just_these=[], $userName=NULL) |
355 | //public function getLdapUsersAttributes($ldapConnection, $filter='', $just_these=[]) | 357 | //public function getLdapUsersAttributes($ldapConnection, $filter='', $just_these=[]) |
@@ -360,7 +362,7 @@ class LdapConnectionsTable extends AppTable | @@ -360,7 +362,7 @@ class LdapConnectionsTable extends AppTable | ||
360 | 362 | ||
361 | // LDAP mode | 363 | // LDAP mode |
362 | //if ($this->LDAP_USED) { | 364 | //if ($this->LDAP_USED) { |
363 | - /* (EP) | 365 | + /ST (EP) |
364 | Fonction ldap_search ($link_identifier, $base_dn, $filter, array $attributes = null, $attrsonly = null, $sizelimit = null, $timelimit = null, $deref = null) | 366 | Fonction ldap_search ($link_identifier, $base_dn, $filter, array $attributes = null, $attrsonly = null, $sizelimit = null, $timelimit = null, $deref = null) |
365 | Concernant le paramètre $attributes (ici, $just_these) : | 367 | Concernant le paramètre $attributes (ici, $just_these) : |
366 | - An array of the required attributes, e.g. array("mail", "sn", "cn"). | 368 | - An array of the required attributes, e.g. array("mail", "sn", "cn"). |
@@ -377,7 +379,7 @@ class LdapConnectionsTable extends AppTable | @@ -377,7 +379,7 @@ class LdapConnectionsTable extends AppTable | ||
377 | (par exemple, si elle vaut "['cn']" ça signifie qu'on veut "seulement l'attribut 'cn'") | 379 | (par exemple, si elle vaut "['cn']" ça signifie qu'on veut "seulement l'attribut 'cn'") |
378 | Quand on n'utilise pas $just_these, la fonction ldap_search() retourne TOUS les attributs disponibles, | 380 | Quand on n'utilise pas $just_these, la fonction ldap_search() retourne TOUS les attributs disponibles, |
379 | donc c'est le comportement qu'on veut ici. | 381 | donc c'est le comportement qu'on veut ici. |
380 | - */ | 382 | + ST/ |
381 | 383 | ||
382 | //$ldapConnection = ldap_connect($this->host, $this->port); | 384 | //$ldapConnection = ldap_connect($this->host, $this->port); |
383 | //ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | 385 | //ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); |
@@ -385,12 +387,12 @@ class LdapConnectionsTable extends AppTable | @@ -385,12 +387,12 @@ class LdapConnectionsTable extends AppTable | ||
385 | // NEW: $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; | 387 | // NEW: $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; |
386 | 388 | ||
387 | // OLD à virer | 389 | // OLD à virer |
388 | - /* | 390 | + /ST |
389 | $filter = '(' . $this->authenticationType . '=' . $user_login . ')'; | 391 | $filter = '(' . $this->authenticationType . '=' . $user_login . ')'; |
390 | $just_these = []; | 392 | $just_these = []; |
391 | $results = ldap_search($ldapConnection, $this->baseDn, $filter); | 393 | $results = ldap_search($ldapConnection, $this->baseDn, $filter); |
392 | return ldap_get_entries($ldapConnection, $results); | 394 | return ldap_get_entries($ldapConnection, $results); |
393 | - */ | 395 | + ST/ |
394 | 396 | ||
395 | // $filter = "(&".$this->filter. "(".$this->authenticationType . '=' . $user_login."))"; | 397 | // $filter = "(&".$this->filter. "(".$this->authenticationType . '=' . $user_login."))"; |
396 | $results = ldap_search($ldapConnection, $this->baseDn, $filter, $just_these) | 398 | $results = ldap_search($ldapConnection, $this->baseDn, $filter, $just_these) |
@@ -411,6 +413,7 @@ class LdapConnectionsTable extends AppTable | @@ -411,6 +413,7 @@ class LdapConnectionsTable extends AppTable | ||
411 | 413 | ||
412 | return false; | 414 | return false; |
413 | } | 415 | } |
416 | + */ | ||
414 | 417 | ||
415 | 418 | ||
416 | 419 | ||
@@ -576,10 +579,18 @@ class LdapConnectionsTable extends AppTable | @@ -576,10 +579,18 @@ class LdapConnectionsTable extends AppTable | ||
576 | 579 | ||
577 | /* | 580 | /* |
578 | * OLD CODE QUI MARCHE | 581 | * OLD CODE QUI MARCHE |
582 | + | ||
579 | $ldapConnection = ldap_connect($this->host, $this->port); | 583 | $ldapConnection = ldap_connect($this->host, $this->port); |
580 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | 584 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); |
585 | + | ||
586 | + - From ldapAuthentication(): | ||
581 | if (@ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password)) | 587 | if (@ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password)) |
582 | return $this->getUserAttributes($user_login)[0]; | 588 | return $this->getUserAttributes($user_login)[0]; |
589 | + | ||
590 | + - From getUserAttributes(): | ||
591 | + $results = ldap_search($ldapConnection, $this->baseDn, $this->filter); | ||
592 | + $search = ldap_get_entries($ldapConnection, $results); | ||
593 | + | ||
583 | */ | 594 | */ |
584 | 595 | ||
585 | // CONNEXION | 596 | // CONNEXION |
@@ -593,20 +604,26 @@ class LdapConnectionsTable extends AppTable | @@ -593,20 +604,26 @@ class LdapConnectionsTable extends AppTable | ||
593 | 604 | ||
594 | // BINDING | 605 | // BINDING |
595 | 606 | ||
596 | - // - Authentified | ||
597 | - if ($this->ldap_authentified) $ldapbind = ldap_bind($ldapConnection, $this->bindDn, $this->bindPass); | ||
598 | - // or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | ||
599 | - | ||
600 | - // - Anonymous | ||
601 | - // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. | ||
602 | - // Sans cette ligne, on passe avec n'importe quel password !!! | ||
603 | - else { | ||
604 | - $ldapbind = TRUE; | ||
605 | - // function ldap_bind ($link_identifier, $bind_rdn = null, $bind_password = null) | ||
606 | - //debug("log, pass= " . $user_login . ' ' . $user_password); | ||
607 | - //if ($user_login && $user_password) $ldapbind = ldap_bind($ldapConnection, $this->authenticationType.'='.$user_login, $user_password); | ||
608 | - if ($user_login && $user_password) $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | ||
609 | - //debug("ldapbind " . $ldapbind); | 607 | + $ldapbind = TRUE; |
608 | + if ($user_login && $user_password) { | ||
609 | + // - Authentified | ||
610 | + if ($this->ldap_authentified) $ldapbind = ldap_bind($ldapConnection, $this->bindDn, $this->bindPass); | ||
611 | + // or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | ||
612 | + | ||
613 | + // - Anonymous | ||
614 | + // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. | ||
615 | + // Sans cette ligne, on passe avec n'importe quel password !!! | ||
616 | + else $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | ||
617 | + /* | ||
618 | + else { | ||
619 | + $ldapbind = TRUE; | ||
620 | + // function ldap_bind ($link_identifier, $bind_rdn = null, $bind_password = null) | ||
621 | + //debug("log, pass= " . $user_login . ' ' . $user_password); | ||
622 | + //if ($user_login && $user_password) $ldapbind = ldap_bind($ldapConnection, $this->authenticationType.'='.$user_login, $user_password); | ||
623 | + if ($user_login && $user_password) $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | ||
624 | + //debug("ldapbind " . $ldapbind); | ||
625 | + } | ||
626 | + */ | ||
610 | } | 627 | } |
611 | 628 | ||
612 | // SEARCH | 629 | // SEARCH |