Commit be8d153182756ac4722a6a7b538c966fd48e0fb6
1 parent
091b1d3d
Exists in
master
and in
2 other branches
encore un petit bugfix
Showing
4 changed files
with
48 additions
and
29 deletions
Show diff stats
README.md
@@ -54,12 +54,11 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -54,12 +54,11 @@ Logiciel testé et validé sur les configurations suivantes : | ||
54 | VERSION ACTUELLE | 54 | VERSION ACTUELLE |
55 | 55 | ||
56 | Date: 14/02/2019 | 56 | Date: 14/02/2019 |
57 | -Version: 2.10.12.bugfix5 | 57 | +Version: 2.10.13.bugfix1 |
58 | Author: EP | 58 | Author: EP |
59 | - (version IRAP only) Bugfix LDAP anonyme, refactorisation, et optimisation | 59 | + (IRAP ONLY) Bugfix Ajout/Edit materiel |
60 | 60 | ||
61 | - - LDAP anonyme se faisait sans vérifier le mot de passe utilisateur !!! | ||
62 | - - Optimisation update email sur changement de responsable (dans vues ADD et EDIT) => LDAP et AJAX inutile, on fait avec un tableau local | 61 | + LDAP refactorisation && optimisation (1) |
63 | 62 | ||
64 | IMPORTANT: | 63 | IMPORTANT: |
65 | - Pour connaitre la version actuelle, taper "./VERSION" | 64 | - Pour connaitre la version actuelle, taper "./VERSION" |
@@ -81,9 +80,6 @@ Version majeure en cours : 2.10 (https://projects.irap.omp.eu/versions/207) | @@ -81,9 +80,6 @@ Version majeure en cours : 2.10 (https://projects.irap.omp.eu/versions/207) | ||
81 | ROADMAP: https://projects.irap.omp.eu/projects/inventirap/roadmap | 80 | ROADMAP: https://projects.irap.omp.eu/projects/inventirap/roadmap |
82 | 81 | ||
83 | 82 | ||
84 | -(+ en cours: | ||
85 | - Ajout du dossier vendor/ dans git (évite d'avoir besoin de réinstaller les dépendances à chaque update de cakephp) | ||
86 | -) | ||
87 | ----------------------------------------------------------------------------------------------------------- | 83 | ----------------------------------------------------------------------------------------------------------- |
88 | Messages à copier/coller en cas de besoin : | 84 | Messages à copier/coller en cas de besoin : |
89 | - ATTENTION : Mise à jour de la base de données requise (cf database/update) | 85 | - ATTENTION : Mise à jour de la base de données requise (cf database/update) |
src/Controller/MaterielsController.php
@@ -794,7 +794,7 @@ class MaterielsController extends AppController | @@ -794,7 +794,7 @@ class MaterielsController extends AppController | ||
794 | 'order' => 'designation', | 794 | 'order' => 'designation', |
795 | 'group' => 'designation' | 795 | 'group' => 'designation' |
796 | ]); | 796 | ]); |
797 | - $domaineresp = TableRegistry::get('Users')->find() | 797 | + $domaineresp = TableRegistry::getTableLocator()->get('Users')->find() |
798 | ->select('sur_categorie_id') | 798 | ->select('sur_categorie_id') |
799 | ->where([ | 799 | ->where([ |
800 | 'username =' => $this->LdapAuth->user($this->request->getSession() | 800 | 'username =' => $this->LdapAuth->user($this->request->getSession() |
@@ -803,8 +803,8 @@ class MaterielsController extends AppController | @@ -803,8 +803,8 @@ class MaterielsController extends AppController | ||
803 | ->first()['sur_categorie_id']; | 803 | ->first()['sur_categorie_id']; |
804 | if ($domaineresp == null) | 804 | if ($domaineresp == null) |
805 | $domaineresp = false; | 805 | $domaineresp = false; |
806 | - $utilisateurconnect = TableRegistry::get('Users')->find('all')->toArray(); | ||
807 | - | 806 | + $utilisateurconnect = TableRegistry::getTableLocator()->get('Users')->find('all')->toArray(); |
807 | + | ||
808 | // TODO: code redondant avec edit(), à factoriser | 808 | // TODO: code redondant avec edit(), à factoriser |
809 | // HOWTO: https://book.cakephp.org/3.0/en/orm.html | 809 | // HOWTO: https://book.cakephp.org/3.0/en/orm.html |
810 | //$users = TableRegistry::get('LdapConnections')->getListUsers(); | 810 | //$users = TableRegistry::get('LdapConnections')->getListUsers(); |
@@ -1132,7 +1132,7 @@ class MaterielsController extends AppController | @@ -1132,7 +1132,7 @@ class MaterielsController extends AppController | ||
1132 | 'order' => 'Fournisseurs.nom' | 1132 | 'order' => 'Fournisseurs.nom' |
1133 | ]); | 1133 | ]); |
1134 | 1134 | ||
1135 | - $users = TableRegistry::get('LdapConnections')->getListUsers(); | 1135 | + $users = TableRegistry::getTableLocator()->get('LdapConnections')->getListUsers(); |
1136 | 1136 | ||
1137 | // tri des utilisateurs par nom | 1137 | // tri des utilisateurs par nom |
1138 | sort($users); | 1138 | sort($users); |
src/Controller/UsersController.php
@@ -61,20 +61,22 @@ class UsersController extends AppController | @@ -61,20 +61,22 @@ class UsersController extends AppController | ||
61 | return parent::isAuthorized($user); | 61 | return parent::isAuthorized($user); |
62 | } | 62 | } |
63 | 63 | ||
64 | - /* | ||
65 | - // Utilisateur identifie | ||
66 | - //debug($user); | ||
67 | - // On va maintenant à la page qui etait demandee | ||
68 | - // Utilisateur non reconnu | ||
69 | - */ | ||
70 | public function login() | 64 | public function login() |
71 | { | 65 | { |
66 | + // Un utilisateur a essayé de se loguer | ||
72 | if ($this->request->is('post')) { | 67 | if ($this->request->is('post')) { |
73 | $user = $this->LdapAuth->connection(); | 68 | $user = $this->LdapAuth->connection(); |
69 | + //var_dump($user); | ||
70 | + //debug($user); | ||
71 | + | ||
72 | + // Le login a été accepté | ||
74 | if ($user != FALSE) { | 73 | if ($user != FALSE) { |
75 | $this->LdapAuth->setUser($user); | 74 | $this->LdapAuth->setUser($user); |
75 | + // On va maintenant à la page qui etait demandee | ||
76 | return $this->redirect($this->LdapAuth->redirectUrl()); | 76 | return $this->redirect($this->LdapAuth->redirectUrl()); |
77 | } | 77 | } |
78 | + | ||
79 | + // Utilisateur non reconnu | ||
78 | $this->Flash->error(__('Login ou mot de passe invalide, réessayez')); | 80 | $this->Flash->error(__('Login ou mot de passe invalide, réessayez')); |
79 | } | 81 | } |
80 | } | 82 | } |
src/Model/Table/LdapConnectionsTable.php
@@ -29,7 +29,7 @@ class LdapConnectionsTable extends AppTable | @@ -29,7 +29,7 @@ class LdapConnectionsTable extends AppTable | ||
29 | private $bindPass; | 29 | private $bindPass; |
30 | /* fin MCM*/ | 30 | /* fin MCM*/ |
31 | 31 | ||
32 | - private $USE_LDAP = TRUE; | 32 | + private $LDAP_USED = TRUE; |
33 | 33 | ||
34 | private $fakeLDAPUsers = []; | 34 | private $fakeLDAPUsers = []; |
35 | 35 | ||
@@ -47,7 +47,7 @@ class LdapConnectionsTable extends AppTable | @@ -47,7 +47,7 @@ class LdapConnectionsTable extends AppTable | ||
47 | public function useLdap() | 47 | public function useLdap() |
48 | { | 48 | { |
49 | $this->checkConfiguration(); | 49 | $this->checkConfiguration(); |
50 | - return $this->USE_LDAP; | 50 | + return $this->LDAP_USED; |
51 | } | 51 | } |
52 | 52 | ||
53 | private function buildFakeLdapUsers() | 53 | private function buildFakeLdapUsers() |
@@ -140,10 +140,10 @@ class LdapConnectionsTable extends AppTable | @@ -140,10 +140,10 @@ class LdapConnectionsTable extends AppTable | ||
140 | ]) | 140 | ]) |
141 | ->first(); | 141 | ->first(); |
142 | 142 | ||
143 | - //$this->USE_LDAP = $config->use_ldap ? TRUE : FALSE; | ||
144 | - $this->USE_LDAP = $config->ldap_used; | 143 | + //$this->LDAP_USED = $config->LDAP_USED ? TRUE : FALSE; |
144 | + $this->LDAP_USED = $config->ldap_used; | ||
145 | 145 | ||
146 | - if (! $this->USE_LDAP) { | 146 | + if (! $this->LDAP_USED) { |
147 | //$this->authenticationType = $config->authentificationType_ldap; | 147 | //$this->authenticationType = $config->authentificationType_ldap; |
148 | $this->authenticationType = $config->ldap_authenticationType; | 148 | $this->authenticationType = $config->ldap_authenticationType; |
149 | if (empty($this->fakeLDAPUsers)) | 149 | if (empty($this->fakeLDAPUsers)) |
@@ -190,7 +190,7 @@ class LdapConnectionsTable extends AppTable | @@ -190,7 +190,7 @@ class LdapConnectionsTable extends AppTable | ||
190 | try { | 190 | try { |
191 | if ($this->checkConfiguration()) { | 191 | if ($this->checkConfiguration()) { |
192 | // REAL LDAP | 192 | // REAL LDAP |
193 | - if ($this->USE_LDAP) { | 193 | + if ($this->LDAP_USED) { |
194 | $ldapConnection = ldap_connect($this->host, $this->port); | 194 | $ldapConnection = ldap_connect($this->host, $this->port); |
195 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | 195 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); |
196 | 196 | ||
@@ -213,7 +213,7 @@ class LdapConnectionsTable extends AppTable | @@ -213,7 +213,7 @@ class LdapConnectionsTable extends AppTable | ||
213 | try { | 213 | try { |
214 | 214 | ||
215 | if ($this->checkConfiguration()) { | 215 | if ($this->checkConfiguration()) { |
216 | - if ($this->USE_LDAP) { | 216 | + if ($this->LDAP_USED) { |
217 | $ldapConnection = ldap_connect($this->host, $this->port); | 217 | $ldapConnection = ldap_connect($this->host, $this->port); |
218 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); | 218 | ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3); |
219 | $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); | 219 | $results = ldap_search($ldapConnection, $this->baseDn, '(' . $this->authenticationType . '=' . $userName . ')'); |
@@ -244,6 +244,27 @@ class LdapConnectionsTable extends AppTable | @@ -244,6 +244,27 @@ class LdapConnectionsTable extends AppTable | ||
244 | } | 244 | } |
245 | 245 | ||
246 | /** | 246 | /** |
247 | + * Return a list of Users with key = username & value = email | ||
248 | + */ | ||
249 | + public function getUsersWithNameAndEmail() { | ||
250 | + $usersWithNameAndEmail = []; | ||
251 | + // Get all users (with ALL their attributes) | ||
252 | + $u = $this->getAllLdapUsers(); | ||
253 | + // Sort users | ||
254 | + //sort($u); | ||
255 | + //debug($u); | ||
256 | + // (EP) Refactorisation pour éviter code redondant ci-dessous, c'était pourtant pas compliqué, poil dans la main... | ||
257 | + $nb_users = $this->LDAP_USED ? $u['count'] : sizeof($u)-1; | ||
258 | + for ($i = 0; $i < $nb_users; $i ++) | ||
259 | + // $utilisateurs["Pallier Etienne"] = ["email"] | ||
260 | + $usersWithNameAndEmail[ $u[$i]['sn'][0].' '.$u[$i]['givenname'][0] ] = $u[$i]['mail'][0]; | ||
261 | + //debug($usersWithNameAndEmail); | ||
262 | + // Sort users (without modifying the keys, don't use sort() but asort() !!!!!!!!!!!!!) | ||
263 | + ksort($usersWithNameAndEmail); | ||
264 | + return $usersWithNameAndEmail; | ||
265 | + } | ||
266 | + | ||
267 | + /** | ||
247 | * Return a list of Users with key = username & value = username | 268 | * Return a list of Users with key = username & value = username |
248 | */ | 269 | */ |
249 | public function getListUsers() | 270 | public function getListUsers() |
@@ -251,7 +272,7 @@ class LdapConnectionsTable extends AppTable | @@ -251,7 +272,7 @@ class LdapConnectionsTable extends AppTable | ||
251 | $u = $this->getAllLdapUsers(); | 272 | $u = $this->getAllLdapUsers(); |
252 | $utilisateurs = []; | 273 | $utilisateurs = []; |
253 | 274 | ||
254 | - if ($this->USE_LDAP) { | 275 | + if ($this->LDAP_USED) { |
255 | for ($i = 0; $i < $u['count']; $i ++) { | 276 | for ($i = 0; $i < $u['count']; $i ++) { |
256 | $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]; | 277 | $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]; |
257 | } | 278 | } |
@@ -272,7 +293,7 @@ class LdapConnectionsTable extends AppTable | @@ -272,7 +293,7 @@ class LdapConnectionsTable extends AppTable | ||
272 | $u = $this->getAllLdapUsers(); | 293 | $u = $this->getAllLdapUsers(); |
273 | $utilisateurs = []; | 294 | $utilisateurs = []; |
274 | 295 | ||
275 | - if ($this->USE_LDAP) { | 296 | + if ($this->LDAP_USED) { |
276 | for ($i = 0; $i < $u['count']; $i ++) { | 297 | for ($i = 0; $i < $u['count']; $i ++) { |
277 | $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i][$this->authenticationType][0]; | 298 | $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i][$this->authenticationType][0]; |
278 | } | 299 | } |
@@ -293,7 +314,7 @@ class LdapConnectionsTable extends AppTable | @@ -293,7 +314,7 @@ class LdapConnectionsTable extends AppTable | ||
293 | $u = $this->getAllLdapUsers(); | 314 | $u = $this->getAllLdapUsers(); |
294 | $utilisateurs = []; | 315 | $utilisateurs = []; |
295 | 316 | ||
296 | - if ($this->USE_LDAP) { | 317 | + if ($this->LDAP_USED) { |
297 | for ($i = 0; $i < $u['count']; $i ++) { | 318 | for ($i = 0; $i < $u['count']; $i ++) { |
298 | if (isset($u[$i]['mail'][0])) { | 319 | if (isset($u[$i]['mail'][0])) { |
299 | $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i]['mail'][0]; | 320 | $utilisateurs[$u[$i]['sn'][0] . ' ' . $u[$i]['givenname'][0]] = $u[$i]['mail'][0]; |
@@ -317,7 +338,7 @@ class LdapConnectionsTable extends AppTable | @@ -317,7 +338,7 @@ class LdapConnectionsTable extends AppTable | ||
317 | { | 338 | { |
318 | $u = $this->getAllLdapUsers(); | 339 | $u = $this->getAllLdapUsers(); |
319 | 340 | ||
320 | - if ($this->USE_LDAP) { | 341 | + if ($this->LDAP_USED) { |
321 | $nbUsers = $u['count']; | 342 | $nbUsers = $u['count']; |
322 | } else { | 343 | } else { |
323 | $nbUsers = sizeof($u) - 1; | 344 | $nbUsers = sizeof($u) - 1; |
@@ -340,7 +361,7 @@ class LdapConnectionsTable extends AppTable | @@ -340,7 +361,7 @@ class LdapConnectionsTable extends AppTable | ||
340 | try { | 361 | try { |
341 | if ($this->checkConfiguration()) { | 362 | if ($this->checkConfiguration()) { |
342 | 363 | ||
343 | - if ($this->USE_LDAP) { | 364 | + if ($this->LDAP_USED) { |
344 | if (strlen(trim($password)) == 0) | 365 | if (strlen(trim($password)) == 0) |
345 | return FALSE; | 366 | return FALSE; |
346 | $ldapConnection = ldap_connect($this->host, $this->port); | 367 | $ldapConnection = ldap_connect($this->host, $this->port); |