diff --git a/README.md b/README.md index d41a21e..d5e382e 100644 --- a/README.md +++ b/README.md @@ -54,12 +54,11 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE Date: 14/02/2019 -Version: 2.10.12.bugfix5 +Version: 2.10.13.bugfix1 Author: EP - (version IRAP only) Bugfix LDAP anonyme, refactorisation, et optimisation + (IRAP ONLY) Bugfix Ajout/Edit materiel - - LDAP anonyme se faisait sans vérifier le mot de passe utilisateur !!! - - Optimisation update email sur changement de responsable (dans vues ADD et EDIT) => LDAP et AJAX inutile, on fait avec un tableau local + LDAP refactorisation && optimisation (1) IMPORTANT: - Pour connaitre la version actuelle, taper "./VERSION" @@ -81,9 +80,6 @@ Version majeure en cours : 2.10 (https://projects.irap.omp.eu/versions/207) ROADMAP: https://projects.irap.omp.eu/projects/inventirap/roadmap -(+ en cours: - Ajout du dossier vendor/ dans git (évite d'avoir besoin de réinstaller les dépendances à chaque update de cakephp) -) ----------------------------------------------------------------------------------------------------------- Messages à copier/coller en cas de besoin : - ATTENTION : Mise à jour de la base de données requise (cf database/update) diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 01328e1..c949d31 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -794,7 +794,7 @@ class MaterielsController extends AppController 'order' => 'designation', 'group' => 'designation' ]); - $domaineresp = TableRegistry::get('Users')->find() + $domaineresp = TableRegistry::getTableLocator()->get('Users')->find() ->select('sur_categorie_id') ->where([ 'username =' => $this->LdapAuth->user($this->request->getSession() @@ -803,8 +803,8 @@ class MaterielsController extends AppController ->first()['sur_categorie_id']; if ($domaineresp == null) $domaineresp = false; - $utilisateurconnect = TableRegistry::get('Users')->find('all')->toArray(); - + $utilisateurconnect = TableRegistry::getTableLocator()->get('Users')->find('all')->toArray(); + // TODO: code redondant avec edit(), à factoriser // HOWTO: https://book.cakephp.org/3.0/en/orm.html //$users = TableRegistry::get('LdapConnections')->getListUsers(); @@ -1132,7 +1132,7 @@ class MaterielsController extends AppController 'order' => 'Fournisseurs.nom' ]); - $users = TableRegistry::get('LdapConnections')->getListUsers(); + $users = TableRegistry::getTableLocator()->get('LdapConnections')->getListUsers(); // tri des utilisateurs par nom sort($users); diff --git a/src/Controller/UsersController.php b/src/Controller/UsersController.php index 892a7b4..430b58a 100755 --- a/src/Controller/UsersController.php +++ b/src/Controller/UsersController.php @@ -61,20 +61,22 @@ class UsersController extends AppController return parent::isAuthorized($user); } - /* - // Utilisateur identifie - //debug($user); - // On va maintenant à la page qui etait demandee - // Utilisateur non reconnu - */ public function login() { + // Un utilisateur a essayé de se loguer if ($this->request->is('post')) { $user = $this->LdapAuth->connection(); + //var_dump($user); + //debug($user); + + // Le login a été accepté if ($user != FALSE) { $this->LdapAuth->setUser($user); + // On va maintenant à la page qui etait demandee return $this->redirect($this->LdapAuth->redirectUrl()); } + + // Utilisateur non reconnu $this->Flash->error(__('Login ou mot de passe invalide, réessayez')); } } diff --git a/src/Model/Table/LdapConnectionsTable.php b/src/Model/Table/LdapConnectionsTable.php index 1e653e3..7cc29dd 100755 --- a/src/Model/Table/LdapConnectionsTable.php +++ b/src/Model/Table/LdapConnectionsTable.php @@ -29,7 +29,7 @@ class LdapConnectionsTable extends AppTable private $bindPass; /* fin MCM*/ - private $USE_LDAP = TRUE; + private $LDAP_USED = TRUE; private $fakeLDAPUsers = []; @@ -47,7 +47,7 @@ class LdapConnectionsTable extends AppTable public function useLdap() { $this->checkConfiguration(); - return $this->USE_LDAP; + return $this->LDAP_USED; } private function buildFakeLdapUsers() @@ -140,10 +140,10 @@ class LdapConnectionsTable extends AppTable ]) ->first(); - //$this->USE_LDAP = $config->use_ldap ? TRUE : FALSE; - $this->USE_LDAP = $config->ldap_used; + //$this->LDAP_USED = $config->LDAP_USED ? TRUE : FALSE; + $this->LDAP_USED = $config->ldap_used; - if (! $this->USE_LDAP) { + if (! $this->LDAP_USED) { //$this->authenticationType = $config->authentificationType_ldap; $this->authenticationType = $config->ldap_authenticationType; if (empty($this->fakeLDAPUsers)) @@ -190,7 +190,7 @@ class LdapConnectionsTable extends AppTable try { if ($this->checkConfiguration()) { // REAL LDAP - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { $ldapConnection = ldap_connect($this->host, $this->port); ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); @@ -213,7 +213,7 @@ class LdapConnectionsTable extends AppTable try { if ($this->checkConfiguration()) { - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { $ldapConnection = ldap_connect($this->host, $this->port); ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); @@ -244,6 +244,27 @@ class LdapConnectionsTable extends AppTable } /** + * Return a list of Users with key = username & value = email + */ + public function getUsersWithNameAndEmail() { + $usersWithNameAndEmail = []; + // Get all users (with ALL their attributes) + $u = $this->getAllLdapUsers(); + // Sort users + //sort($u); + //debug($u); + // (EP) Refactorisation pour éviter code redondant ci-dessous, c'était pourtant pas compliqué, poil dans la main... + $nb_users = $this->LDAP_USED ? $u['count'] : sizeof($u)-1; + for ($i = 0; $i < $nb_users; $i ++) + // $utilisateurs["Pallier Etienne"] = ["email"] + $usersWithNameAndEmail[ $u[$i]['sn'][0].' '.$u[$i]['givenname'][0] ] = $u[$i]['mail'][0]; + //debug($usersWithNameAndEmail); + // Sort users (without modifying the keys, don't use sort() but asort() !!!!!!!!!!!!!) + ksort($usersWithNameAndEmail); + return $usersWithNameAndEmail; + } + + /** * Return a list of Users with key = username & value = username */ public function getListUsers() @@ -251,7 +272,7 @@ class LdapConnectionsTable extends AppTable $u = $this->getAllLdapUsers(); $utilisateurs = []; - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { for ($i = 0; $i < $u['count']; $i ++) { $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]; } @@ -272,7 +293,7 @@ class LdapConnectionsTable extends AppTable $u = $this->getAllLdapUsers(); $utilisateurs = []; - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { for ($i = 0; $i < $u['count']; $i ++) { $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i][$this->authenticationType][0]; } @@ -293,7 +314,7 @@ class LdapConnectionsTable extends AppTable $u = $this->getAllLdapUsers(); $utilisateurs = []; - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { for ($i = 0; $i < $u['count']; $i ++) { if (isset($u[$i]['mail'][0])) { $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i]['mail'][0]; @@ -317,7 +338,7 @@ class LdapConnectionsTable extends AppTable { $u = $this->getAllLdapUsers(); - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { $nbUsers = $u['count']; } else { $nbUsers = sizeof($u) - 1; @@ -340,7 +361,7 @@ class LdapConnectionsTable extends AppTable try { if ($this->checkConfiguration()) { - if ($this->USE_LDAP) { + if ($this->LDAP_USED) { if (strlen(trim($password)) == 0) return FALSE; $ldapConnection = ldap_connect($this->host, $this->port); -- libgit2 0.21.2