Commit b0b629bbae8f064fa384781f69b5638fac2bd6a0
1 parent
aec79c69
Exists in
master
and in
2 other branches
Refactorisation add()&edit() de Materiels + BUGFIX + Cleanup LDAP
DESCRIPTION : - GROS CLEANUP du code LDAP dans LdapConnectionsTable.php - REFACTORISATION des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables - BUGFIX Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) IMPORTANT : - Pour connaitre la version actuelle, taper "./VERSION" - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) - Pour s'assurer que la version récupérée est stable, taper "./TESTS.sh" (tout doit passer ok) - En cas de problème, taper ./SHOW_LOGS pour voir si les logs d'erreur peuvent aider - Pour que "./TESTS.sh" s'exécute sans "deprecated error", il faut ajouter cette ligne dans la clé 'Error' de votre fichier config/app.php : 'Error' => [ ... 'errorLevel' => E_ALL & ~E_USER_DEPRECATED, ... ],
Showing
2 changed files
with
44 additions
and
386 deletions
Show diff stats
README.md
... | ... | @@ -53,28 +53,29 @@ Logiciel testé et validé sur les configurations suivantes : |
53 | 53 | |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | -Date: 25/03/2019 | |
57 | -Version: 2.11.2 | |
56 | +Date: 26/03/2019 | |
57 | +Version: 2.12.0 | |
58 | 58 | Author: EP |
59 | - Refactorisation des actions add() et edit() de MaterielsController + BUGFIX gestionnaire | |
59 | +Refactorisation de add() et edit() de Materiels + BUGFIX gestionnaire + Cleanup LDAP | |
60 | 60 | |
61 | - DESCRIPTION : | |
62 | - - Refactorisation des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables | |
63 | - - Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) | |
61 | +DESCRIPTION : | |
62 | + - GROS CLEANUP du code LDAP dans LdapConnectionsTable.php | |
63 | + - REFACTORISATION des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables | |
64 | + - BUGFIX Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) | |
64 | 65 | |
65 | - IMPORTANT : | |
66 | - - Pour connaitre la version actuelle, taper "./VERSION" | |
67 | - - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") | |
68 | - (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) | |
69 | - - Pour s'assurer que la version récupérée est stable, taper "./TESTS.sh" (tout doit passer ok) | |
70 | - - En cas de problème, taper ./SHOW_LOGS pour voir si les logs d'erreur peuvent aider | |
71 | - - Pour que "./TESTS.sh" s'exécute sans "deprecated error", | |
72 | - il faut ajouter cette ligne dans la clé 'Error' de votre fichier config/app.php | |
73 | - 'Error' => [ | |
74 | - ... | |
75 | - 'errorLevel' => E_ALL & ~E_USER_DEPRECATED, | |
76 | - ... | |
77 | - ], | |
66 | +IMPORTANT : | |
67 | + - Pour connaitre la version actuelle, taper "./VERSION" | |
68 | + - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") | |
69 | + (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) | |
70 | + - Pour s'assurer que la version récupérée est stable, taper "./TESTS.sh" (tout doit passer ok) | |
71 | + - En cas de problème, taper ./SHOW_LOGS pour voir si les logs d'erreur peuvent aider | |
72 | + - Pour que "./TESTS.sh" s'exécute sans "deprecated error", | |
73 | + il faut ajouter cette ligne dans la clé 'Error' de votre fichier config/app.php : | |
74 | + 'Error' => [ | |
75 | + ... | |
76 | + 'errorLevel' => E_ALL & ~E_USER_DEPRECATED, | |
77 | + ... | |
78 | + ], | |
78 | 79 | |
79 | 80 | |
80 | 81 | Version majeure en cours : 2.10 (https://projects.irap.omp.eu/versions/207) | ... | ... |
src/Model/Table/LdapConnectionsTable.php
1 | 1 | <?php |
2 | 2 | namespace App\Model\Table; |
3 | 3 | |
4 | -/* TODO LIST | |
5 | - * | |
6 | - | |
7 | -DONE: | |
8 | -- 1) remplacer ldapAuthentication() par ldapAuthenticationNEW() | |
9 | -- 2) remplacer getUserAttributes() par getLdap1UserOrAllUsersAttributes() | |
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() | |
14 | - | |
15 | -TODO: | |
16 | -- ajouter just_these ? | |
17 | -- TableRegistry::get() à remplacer par TableRegistry::getTableLocator()->get() | |
18 | - | |
19 | - * | |
20 | - */ | |
21 | - | |
22 | - | |
23 | - | |
24 | - | |
25 | 4 | use Cake\ORM\Table; |
26 | 5 | use Cake\ORM\TableRegistry; |
27 | 6 | use Cake\Auth\DefaultPasswordHasher; |
28 | 7 | use Cake\Core\Exception\Exception; |
29 | 8 | |
9 | + | |
30 | 10 | class LdapConnectionsTable extends AppTable |
31 | 11 | { |
32 | 12 | |
... | ... | @@ -230,35 +210,6 @@ class LdapConnectionsTable extends AppTable |
230 | 210 | return TRUE; |
231 | 211 | } |
232 | 212 | |
233 | - /** | |
234 | - * @return $users_fetched or FALSE | |
235 | - // REAL or FAKE LDAP | |
236 | - public function getAllLdapUsersOLD() | |
237 | - { | |
238 | - try { | |
239 | - if ($this->checkConfiguration()) { | |
240 | - | |
241 | - // REAL LDAP | |
242 | - if ($this->LDAP_USED) { | |
243 | - | |
244 | - $ldapConnection = ldap_connect($this->host, $this->port); | |
245 | - ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
246 | - | |
247 | - $results = ldap_search($ldapConnection, $this->baseDn, $this->filter); | |
248 | - | |
249 | - $res = ldap_get_entries($ldapConnection, $results); | |
250 | - } // FAKE LDAP | |
251 | - else { | |
252 | - $res = $this->fakeLDAPUsers; | |
253 | - } | |
254 | - return $res; | |
255 | - } | |
256 | - } | |
257 | - catch (Exception $e) {} | |
258 | - | |
259 | - return false; | |
260 | - } | |
261 | - */ | |
262 | 213 | |
263 | 214 | /** |
264 | 215 | * @return $users_fetched or FALSE |
... | ... | @@ -281,18 +232,7 @@ class LdapConnectionsTable extends AppTable |
281 | 232 | // CACHE the new user in DB for next time |
282 | 233 | if ($users_fetched !== FALSE) $this->saveAllUsersInDB($users_fetched); |
283 | 234 | } |
284 | - /* | |
285 | - $ldapConnection = ldap_connect($this->host, $this->port); | |
286 | - ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
287 | - | |
288 | - // Binding optionnel | |
289 | - if ($this->ldap_authentified) $ldapbind = ldap_bind($ldapConnection, $this->bindDn, $this->bindPass) | |
290 | - or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | |
291 | - | |
292 | - $results = ldap_search($ldapConnection, $this->baseDn, $this->filter); | |
293 | - | |
294 | - $res = ldap_get_entries($ldapConnection, $results); | |
295 | - */ | |
235 | + | |
296 | 236 | } |
297 | 237 | |
298 | 238 | // FAKE LDAP |
... | ... | @@ -310,113 +250,7 @@ class LdapConnectionsTable extends AppTable |
310 | 250 | return FALSE; |
311 | 251 | } |
312 | 252 | |
313 | - | |
314 | 253 | |
315 | - /* | |
316 | - // REAL LDAP only | |
317 | - // TODO: avirer, VIEUX CODE, à remplacer par getLdap1UserOrAllUsersAttributes() | |
318 | - // $userName = login | |
319 | - public function getUserAttributes($ldapConnection, $userName) | |
320 | - { | |
321 | - try { | |
322 | - | |
323 | - if ($this->checkConfiguration()) { | |
324 | - //if ($this->LDAP_USED) { | |
325 | - //$ldapConnection = ldap_connect($this->host, $this->port); | |
326 | - //ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
327 | - $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); | |
328 | - return ldap_get_entries($ldapConnection, $results); | |
329 | - /STAR | |
330 | - } else | |
331 | - return array( | |
332 | - $this->getFakeLdapUser($userName) | |
333 | - ); | |
334 | - STAR/ | |
335 | - } | |
336 | - } catch (Exception $e) {} | |
337 | - | |
338 | - return false; | |
339 | - } | |
340 | - */ | |
341 | - | |
342 | - | |
343 | - | |
344 | - /* | |
345 | - //CALL : $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; | |
346 | - | |
347 | - // REAL LDAP only | |
348 | - /ST | |
349 | - * @param string $ldapConnection | |
350 | - * @param string $filter | |
351 | - * @param array $just_these | |
352 | - * @param string $userName (= login) => for FAKE LDAP only | |
353 | - * @return $res = ldap search result (1 user or all users attributes) or FALSE | |
354 | - ST/ | |
355 | - //public function getUserAttributes($userName, $ldapConnection='', $filter='', $just_these=[]) | |
356 | - //public function getUserAttributes($ldapConnection='', $filter='', $just_these=[], $userName=NULL) | |
357 | - //public function getLdapUsersAttributes($ldapConnection, $filter='', $just_these=[]) | |
358 | - public function getLdap1UserOrAllUsersAttributes($ldapConnection, $user_login, $filter='', $just_these=[]) | |
359 | - { | |
360 | - try { | |
361 | - if ($this->checkConfiguration()) { | |
362 | - | |
363 | - // LDAP mode | |
364 | - //if ($this->LDAP_USED) { | |
365 | - /ST (EP) | |
366 | - Fonction ldap_search ($link_identifier, $base_dn, $filter, array $attributes = null, $attrsonly = null, $sizelimit = null, $timelimit = null, $deref = null) | |
367 | - Concernant le paramètre $attributes (ici, $just_these) : | |
368 | - - An array of the required attributes, e.g. array("mail", "sn", "cn"). | |
369 | - - Note that the "dn" is always returned irrespective of which attributes types are requested. | |
370 | - Telle que notre connexion au LDAP est conçue, on s'attend à recevoir AU MINIMUM | |
371 | - ces attributs dans la réponse de la fonction ldap_search(): | |
372 | - - 'sn' | |
373 | - - 'mail' | |
374 | - - 'givenname' | |
375 | - - 'uid' | |
376 | - - 'userpassword' | |
377 | - Pour récupérer tous ces attributs, il ne faut pas utiliser la variable $just_these, | |
378 | - ou alors il faut qu'elle soit égale à un tableau vide ([]). | |
379 | - (par exemple, si elle vaut "['cn']" ça signifie qu'on veut "seulement l'attribut 'cn'") | |
380 | - Quand on n'utilise pas $just_these, la fonction ldap_search() retourne TOUS les attributs disponibles, | |
381 | - donc c'est le comportement qu'on veut ici. | |
382 | - ST/ | |
383 | - | |
384 | - //$ldapConnection = ldap_connect($this->host, $this->port); | |
385 | - //ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
386 | - // OLD: $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); | |
387 | - // NEW: $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; | |
388 | - | |
389 | - // OLD à virer | |
390 | - /ST | |
391 | - $filter = '(' . $this->authenticationType . '=' . $user_login . ')'; | |
392 | - $just_these = []; | |
393 | - $results = ldap_search($ldapConnection, $this->baseDn, $filter); | |
394 | - return ldap_get_entries($ldapConnection, $results); | |
395 | - ST/ | |
396 | - | |
397 | - // $filter = "(&".$this->filter. "(".$this->authenticationType . '=' . $user_login."))"; | |
398 | - $results = ldap_search($ldapConnection, $this->baseDn, $filter, $just_these) | |
399 | - or die("Could not search to LDAP server response was: " . ldap_error($ldapConnection) ); | |
400 | - $res = ldap_get_entries($ldapConnection, $results); | |
401 | - //echo $info["count"]." entries returned\n"; | |
402 | - return $res; | |
403 | - //} | |
404 | - | |
405 | - // FAKE LDAP mode | |
406 | - //else return array( $this->getFakeLdapUser($userName) ); | |
407 | - //else return $this->fakeLDAPUsers; | |
408 | - | |
409 | - } | |
410 | - } catch (Exception $e) { | |
411 | - //echo 'Exception LDAP : ', $e->getMessage(), "\n"; | |
412 | - } | |
413 | - | |
414 | - return false; | |
415 | - } | |
416 | - */ | |
417 | - | |
418 | - | |
419 | - | |
420 | 254 | public function getAuthenticationType() |
421 | 255 | { |
422 | 256 | return $this->authenticationType; |
... | ... | @@ -563,96 +397,47 @@ class LdapConnectionsTable extends AppTable |
563 | 397 | |
564 | 398 | |
565 | 399 | |
566 | - /* | |
567 | - CALL | |
568 | - | |
569 | - $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; | |
570 | - //TODO: optimisation, refactoriser si comportement général | |
571 | - //$binddn .= ','.$this->baseDn; | |
572 | - $user_fetched = $this->searchLdap($filter, $just_these, $user_login, $user_password); | |
573 | - */ | |
574 | - | |
575 | - | |
576 | - | |
577 | 400 | // REAL LDAP only |
401 | + // SEARCH en 4 étapes | |
578 | 402 | private function searchLdap($filter, $just_these, $user_login=NULL, $user_password=NULL) { |
579 | 403 | |
580 | - /* | |
581 | - * OLD CODE QUI MARCHE | |
582 | - | |
583 | - $ldapConnection = ldap_connect($this->host, $this->port); | |
584 | - ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
585 | - | |
586 | - - From ldapAuthentication(): | |
587 | - if (@ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password)) | |
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 | - | |
594 | - */ | |
595 | - | |
596 | - // CONNEXION | |
404 | + // (1) CONNEXION | |
597 | 405 | $ldapConnection = ldap_connect($this->host, $this->port) |
598 | 406 | or die("Could not connect to $this->host (port $this->port)"); |
599 | 407 | |
600 | 408 | if ($ldapConnection) { |
601 | 409 | |
602 | - // OPTIONS | |
410 | + // (2) SET OPTIONS | |
603 | 411 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); |
604 | 412 | |
605 | - // BINDING | |
413 | + // (3) BINDING OPTIONNEL (true by default if not done) | |
606 | 414 | $ldapbind = TRUE; |
607 | 415 | |
416 | + // - Authentified LDAP | |
417 | + // (EP) ATTENTION: Ne pas faire die() ici car ça stopperait net la mauvaise connexion d'un utilisateur, avec ce message d'erreur ! | |
418 | + // Il vaut mieux retourner FALSE et afficher un joli message de refus sur la page d'accueil | |
608 | 419 | if ($this->ldap_authentified) |
609 | - // - Authentified | |
610 | - $ldapbind = ldap_bind($ldapConnection, $this->bindDn, $this->bindPass) | |
611 | - or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | |
612 | - | |
613 | - else { | |
614 | - // - Anonymous | |
615 | - // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. | |
616 | - // Sans cette ligne, on passe avec n'importe quel password !!! | |
617 | - if ($user_login && $user_password) | |
618 | - $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | |
420 | + //$ldapbind = @ldap_bind($ldapConnection, $this->bindDn, $this->bindPass); | |
421 | + $ldapbind = ldap_bind($ldapConnection, $this->bindDn, $this->bindPass); | |
422 | + //or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | |
423 | + | |
424 | + // - Anonymous LDAP | |
425 | + // (EP) En cas de LDAP anonyme, binding uniquement si login session (pour vérifier le mot de passe de l'utilisateur). | |
426 | + // Car sans cette ligne, on passe avec n'importe quel password !!! | |
427 | + // NB: pas de die() ici, voir remarque juste au-dessus | |
428 | + else if ($user_login && $user_password) | |
429 | + //$ldapbind = @ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | |
430 | + $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | |
619 | 431 | // or die("Could not bind to LDAP server: ". ldap_error($ldapConnection) ); |
620 | - // (EP) Ne pas faire die() ici car ça stopperait net la mauvaise connexion d'un utilisateur, avec ce message d'erreur | |
621 | - // Il vaut mieux retourner FALSE et afficher un joli message de refus sur la page d'accueil | |
622 | - /* | |
623 | - else { | |
624 | - $ldapbind = TRUE; | |
625 | - // function ldap_bind ($link_identifier, $bind_rdn = null, $bind_password = null) | |
626 | - //debug("log, pass= " . $user_login . ' ' . $user_password); | |
627 | - //if ($user_login && $user_password) $ldapbind = ldap_bind($ldapConnection, $this->authenticationType.'='.$user_login, $user_password); | |
628 | - if ($user_login && $user_password) $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | |
629 | - //debug("ldapbind " . $ldapbind); | |
630 | - } | |
631 | - */ | |
632 | - } | |
633 | 432 | |
634 | - // SEARCH | |
433 | + // (4) SEARCH | |
635 | 434 | if ($ldapbind) { |
636 | - | |
637 | - // OLD | |
638 | - //$search = $this->getUserAttributes($ldapConnection, $user_login); | |
639 | - // NEW | |
640 | - //$search = $this->getLdap1UserOrAllUsersAttributes($ldapConnection, $user_login, $filter, $just_these); | |
641 | - | |
642 | - // OLD à virer | |
643 | - /* | |
644 | - $filter = '(' . $this->authenticationType . '=' . $user_login . ')'; | |
645 | - $just_these = []; | |
646 | - $results = ldap_search($ldapConnection, $this->baseDn, $filter); | |
647 | - return ldap_get_entries($ldapConnection, $results); | |
648 | - */ | |
649 | 435 | // $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; |
650 | 436 | // ex: (&(compteinfo=Oui)(uid=epallier)) |
651 | 437 | $results = ldap_search($ldapConnection, $this->baseDn, $filter, $just_these) |
652 | 438 | or die("Could not search to LDAP server response was: " . ldap_error($ldapConnection) ); |
653 | 439 | $search = ldap_get_entries($ldapConnection, $results); |
654 | - //echo $info["count"]." entries returned\n"; | |
655 | - | |
440 | + //echo $results["count"]." entries returned\n"; | |
656 | 441 | if ($search === FALSE) die("Could not get user attributes from LDAP server, response was: " . ldap_error($ldapConnection) ); |
657 | 442 | //return $search[0]; |
658 | 443 | return $search; |
... | ... | @@ -662,76 +447,7 @@ class LdapConnectionsTable extends AppTable |
662 | 447 | |
663 | 448 | // Il y a eu un pb, utilisateur non reconnu |
664 | 449 | return FALSE; |
665 | - | |
666 | - } | |
667 | - | |
668 | - | |
669 | - | |
670 | - // REAL LDAP only | |
671 | - /* | |
672 | - private function checkAndFetchUserFromLdap($user_login, $user_password) { | |
673 | - // Set LDAP parameters | |
674 | - // - Liste des attributs à récupérer dans le ldap (vide = TOUS les attributs) | |
675 | - $just_these = []; | |
676 | - // TODO: vérifier si cette ligne est bien utile ou pas... (avant on faisait ça) | |
677 | - //if (! $this->ldap_authentified) $just_these = array("cn"); | |
678 | - | |
679 | - /* Examples : | |
680 | - * | |
681 | - * - ANONYMOUS LDAP (IRAP) : | |
682 | - * $this->authenticationType = 'uid' | |
683 | - * $this->baseDn = "ou=users,dc=irap,dc=omp,dc=eu" | |
684 | - * | |
685 | - * - AUTHENTIFIED LDAP connection (CRAL) : | |
686 | - * $this->authenticationType = 'sAMAccountName' | |
687 | - * $this->baseDn = "dc=univ-lyon1,dc=fr" | |
688 | - * $binddn="CN=svc_ldap_cral,OU=users,OU=27,OU=sim,OU=univ-lyon1,DC=univ-lyon1,DC=fr"; | |
689 | - * ($binddn = "CN=svc_ldap_cral,OU=users,OU=27,OU=sim,OU=univ-lyon1,".$this->baseDn;) | |
690 | - * $filter = "(&(objectClass=person)(memberOf:1.2.840.113556.1.4.1941:=cn=ucbl.osu.cral,ou=groups,ou=27,ou=sim,ou=univ-lyon1,dc=univ-lyon1,dc=fr))"; | |
691 | - STAR/ | |
692 | - // Construction du filtre avec le filtre de la base de données avec un & sur le login de l'utilisateur | |
693 | - // Si aucun filtre n'est défini dans la base de données on aura juste (& ($this->authenticationType=$user_login)) | |
694 | - // ex: "(&(objectClass=person)(memberOf:1.2.840.113556.1.4.1941:=cn=ucbl.osu.cral,ou=groups,ou=27,ou=sim,ou=univ-lyon1,dc=univ-lyon1,dc=fr)(sAMAccountName=$user_login))"; | |
695 | - $filter = "(&".$this->filter."(".$this->authenticationType . '=' . $user_login."))"; | |
696 | - | |
697 | - //TODO: optimisation, refactoriser si comportement général | |
698 | - //$binddn .= ','.$this->baseDn; | |
699 | - | |
700 | - $res = $this->searchLdap($filter, $just_these, $user_login, $user_password); | |
701 | - if ($res != FALSE) return $res[0]; | |
702 | - | |
703 | - /* | |
704 | - // CONNEXION | |
705 | - $ldapConnection = ldap_connect($this->host, $this->port) | |
706 | - or die("Could not connect to $this->host (port $this->port)"); | |
707 | - | |
708 | - if ($ldapConnection) { | |
709 | - | |
710 | - // OPTIONS | |
711 | - ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
712 | - | |
713 | - // BINDING | |
714 | - if ($this->ldap_authentified) | |
715 | - $ldapbind = ldap_bind($ldapConnection, $this->bindDn, $this->bindPass); // or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | |
716 | - // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. | |
717 | - // Sans cette ligne, on passe avec n'importe quel password !!! | |
718 | - else | |
719 | - $ldapbind = ldap_bind($ldapConnection, $this->authenticationType.'='.$user_login, $user_password); | |
720 | - | |
721 | - // SEARCH | |
722 | - if ($ldapbind) { | |
723 | - $search = $this->getUserAttributes($user_login, $ldapConnection, $filter, $just_these); | |
724 | - if ($search === false) die("Could not get user attributes from LDAP server, response was: " . ldap_error($ldapConnection) ); | |
725 | - return $search[0]; | |
726 | - } | |
727 | - | |
728 | - } | |
729 | - STAR/ | |
730 | - | |
731 | - // Il y a eu un pb, utilisateur non reconnu | |
732 | - return FALSE; | |
733 | - } | |
734 | - */ | |
450 | + } // searchLdap() | |
735 | 451 | |
736 | 452 | |
737 | 453 | // TODO: implement |
... | ... | @@ -741,51 +457,6 @@ class LdapConnectionsTable extends AppTable |
741 | 457 | } |
742 | 458 | |
743 | 459 | |
744 | - | |
745 | - | |
746 | - /* | |
747 | - * @param string $user_login | |
748 | - * @param string $user_password | |
749 | - * @return logged user LDAP attributes or FALSE if user not found in LDAP | |
750 | - */ | |
751 | - /* | |
752 | - public function ldapAuthenticationOLD($user_login, $user_password) { | |
753 | - try { | |
754 | - if ($this->checkConfiguration()) { | |
755 | - if ($this->LDAP_USED) { | |
756 | - if (strlen(trim($user_password)) == 0) | |
757 | - return FALSE; | |
758 | - $ldapConnection = ldap_connect($this->host, $this->port); | |
759 | - ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
760 | - if (@ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password)) { | |
761 | - return $this->getUserAttributes($user_login)[0]; | |
762 | - /STAR | |
763 | - * } else { | |
764 | - * return false; | |
765 | - STAR/ | |
766 | - } | |
767 | - } else { | |
768 | - $user = $this->getFakeLdapUser($user_login); | |
769 | - // debug($user); | |
770 | - if ($user === false) | |
771 | - return FALSE; | |
772 | - // $this->authenticationType peut valoir "uid" ou "cn"... (par défaut "uid" pour le fake ldap, à confirmer...) | |
773 | - // if ($user['uid'][0] == "_NouvelUtilisateur_username" && $user['userpassword'][0] == "_NouvelUtilisateur_password") return $user; | |
774 | - // if ($user[$this->authenticationType][0] == "_NouvelUtilisateur_username" && $user['userpassword'][0] == "_NouvelUtilisateur_password") return $user; | |
775 | - if ($user[$this->authenticationType][0] == $this->getTheFakeLdapUser()['login'] && $user['userpassword'][0] == $this->getTheFakeLdapUser()['pass']) | |
776 | - return $user; | |
777 | - if ((new DefaultPasswordHasher())->check($user_password, $user['userpassword'][0])) | |
778 | - return $user; | |
779 | - // if ($user != false && $user['userpassword'][0] == $password) { | |
780 | - } | |
781 | - } | |
782 | - } catch (Exception $e) { | |
783 | - //echo 'Exception LDAP : ', $e->getMessage(), "\n"; | |
784 | - } | |
785 | - // Il y a eu un problème, l'utilisateur n'est pas reconnu | |
786 | - return FALSE; | |
787 | - } // end ldapAuthentication() | |
788 | - */ | |
789 | 460 | |
790 | 461 | /* |
791 | 462 | * @param string $user_login |
... | ... | @@ -802,20 +473,7 @@ class LdapConnectionsTable extends AppTable |
802 | 473 | |
803 | 474 | // No connexion allowed without password |
804 | 475 | if (strlen(trim($user_password)) == 0) return FALSE; |
805 | - | |
806 | - /* | |
807 | - // VIEUX CODE QUI MARCHE !!! | |
808 | - $ldapConnection = ldap_connect($this->host, $this->port); | |
809 | - ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | |
810 | - if (@ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password)) { | |
811 | - return $this->getUserAttributes($user_login)[0]; | |
812 | - /STAR | |
813 | - * } else { | |
814 | - * return false; | |
815 | - STAR/ | |
816 | - } | |
817 | - */ | |
818 | - | |
476 | + | |
819 | 477 | // TODO: optimisation possible |
820 | 478 | // 1) Search user in CACHE (DB) |
821 | 479 | $user_fetched = $this->checkAndFetchUserFromDB($user_login, $user_password); |
... | ... | @@ -870,7 +528,6 @@ class LdapConnectionsTable extends AppTable |
870 | 528 | return FALSE; |
871 | 529 | |
872 | 530 | } // end ldapAuthentication() |
873 | - | |
874 | 531 | |
875 | 532 | |
876 | 533 | ... | ... |