Commit be8d153182756ac4722a6a7b538c966fd48e0fb6

Authored by Etienne Pallier
1 parent 091b1d3d
Exists in master and in 2 other branches dev, dev-IRAP

encore un petit bugfix

@@ -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);