Commit 35cefa1b59daa8ef27b0167b8e59061497a29f84
1 parent
967be523
Exists in
master
and in
1 other branch
Bugfix logout après passage en mode ldap
v4.108.8-3.7.9
Showing
6 changed files
with
41 additions
and
12 deletions
Show diff stats
CHANGELOG
@@ -315,6 +315,10 @@ Commencer à implémenter le nouveau workflow v5 : | @@ -315,6 +315,10 @@ Commencer à implémenter le nouveau workflow v5 : | ||
315 | ======= CHANGES ======= | 315 | ======= CHANGES ======= |
316 | 316 | ||
317 | ------- | 317 | ------- |
318 | +16/02/2021 v4.108.8-3.7.9 | ||
319 | + - (b) Bugfix logout après passage en mode ldap | ||
320 | + | ||
321 | +------- | ||
318 | 15/02/2021 v4.108.8-3.7.9 | 322 | 15/02/2021 v4.108.8-3.7.9 |
319 | - (b) Bugfix logout après passage en ldap | 323 | - (b) Bugfix logout après passage en ldap |
320 | - (b) bugfix fakeldap ($this->authenticationType par defaut = 'uid') | 324 | - (b) bugfix fakeldap ($this->authenticationType par defaut = 'uid') |
README.md
@@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes : | ||
52 | 52 | ||
53 | -------------------------------------------------------------------------------------------- | 53 | -------------------------------------------------------------------------------------------- |
54 | 54 | ||
55 | -Date: 15/02/2021 | ||
56 | -Version: v4.108.8-3.7.9 | 55 | +Date: 16/02/2021 |
56 | +Version: v4.108.9-3.7.9 | ||
57 | 57 | ||
58 | 58 | ||
59 | 59 |
src/Controller/AppController.php
@@ -35,6 +35,8 @@ use Cake\ORM\Entity; | @@ -35,6 +35,8 @@ use Cake\ORM\Entity; | ||
35 | use Cake\Utility\Inflector; | 35 | use Cake\Utility\Inflector; |
36 | 36 | ||
37 | 37 | ||
38 | +// Idem Model/Table/LdapConnectionsTable et UsersController | ||
39 | +const DEFAULT_AUTH_TYPE = 'uid'; | ||
38 | 40 | ||
39 | /** | 41 | /** |
40 | * Application Controller | 42 | * Application Controller |
@@ -1706,7 +1708,7 @@ class AppController extends Controller | @@ -1706,7 +1708,7 @@ class AppController extends Controller | ||
1706 | $configuration = $this->confLabinvent; | 1708 | $configuration = $this->confLabinvent; |
1707 | //$ldapAuthType = $configuration->ldap_authenticationType; | 1709 | //$ldapAuthType = $configuration->ldap_authenticationType; |
1708 | // fakeldap => 'uid' | 1710 | // fakeldap => 'uid' |
1709 | - $ldapAuthType = $configuration->ldap_authenticationType ? $configuration->ldap_authenticationType : 'uid'; | 1711 | + $ldapAuthType = $configuration->ldap_authenticationType ? $configuration->ldap_authenticationType : DEFAULT_AUTH_TYPE; |
1710 | // Dans les tests, $username est égal à qqch comme : 0 => 'user4_RESP' | 1712 | // Dans les tests, $username est égal à qqch comme : 0 => 'user4_RESP' |
1711 | // par défaut, user est DEJA une Entity User => rien à faire | 1713 | // par défaut, user est DEJA une Entity User => rien à faire |
1712 | // Si $user non défini ou bien array, il faut rechercher ce user dans la BD pour créer un User entity | 1714 | // Si $user non défini ou bien array, il faut rechercher ce user dans la BD pour créer un User entity |
@@ -1726,7 +1728,7 @@ class AppController extends Controller | @@ -1726,7 +1728,7 @@ class AppController extends Controller | ||
1726 | * Evite de planter sur $_SESSION['Auth']['User']['samaccountname'] | 1728 | * Evite de planter sur $_SESSION['Auth']['User']['samaccountname'] |
1727 | * (on continue plutôt de faire $_SESSION['Auth']['User']['uid'], jusqu'à un logout salvateur...) | 1729 | * (on continue plutôt de faire $_SESSION['Auth']['User']['uid'], jusqu'à un logout salvateur...) |
1728 | */ | 1730 | */ |
1729 | - $ldapAuthTypeTemp = isset($_SESSION['Auth']['User'][$ldapAuthType]) ? $ldapAuthType : 'uid'; | 1731 | + $ldapAuthTypeTemp = isset($_SESSION['Auth']['User'][$ldapAuthType]) ? $ldapAuthType : DEFAULT_AUTH_TYPE; |
1730 | $username = $_SESSION['Auth']['User'][$ldapAuthTypeTemp]; | 1732 | $username = $_SESSION['Auth']['User'][$ldapAuthTypeTemp]; |
1731 | } | 1733 | } |
1732 | //debug("ldapAuthType is '$ldapAuthType'"); | 1734 | //debug("ldapAuthType is '$ldapAuthType'"); |
@@ -2139,6 +2141,7 @@ class AppController extends Controller | @@ -2139,6 +2141,7 @@ class AppController extends Controller | ||
2139 | $this->user_role = $this->getUserRole(); | 2141 | $this->user_role = $this->getUserRole(); |
2140 | $profile = self::PROFILES["$this->user_role"]; | 2142 | $profile = self::PROFILES["$this->user_role"]; |
2141 | $this->myDebug("- priviledgedUser is {$this->u}"); | 2143 | $this->myDebug("- priviledgedUser is {$this->u}"); |
2144 | + //debug("- priviledgedUser is {$this->u}"); exit; | ||
2142 | $this->myDebug("- user_role is {$this->getUserRole()}", "- profile is: $profile"); | 2145 | $this->myDebug("- user_role is {$this->getUserRole()}", "- profile is: $profile"); |
2143 | // L'utilisateur connecté (return null si pas connecté) | 2146 | // L'utilisateur connecté (return null si pas connecté) |
2144 | // $this->Auth->user('id'); | 2147 | // $this->Auth->user('id'); |
src/Controller/UsersController.php
@@ -12,6 +12,10 @@ use Cake\ORM\Entity; | @@ -12,6 +12,10 @@ use Cake\ORM\Entity; | ||
12 | const SessionTimeoutON = false; | 12 | const SessionTimeoutON = false; |
13 | //const SessionTimeoutON = true; | 13 | //const SessionTimeoutON = true; |
14 | 14 | ||
15 | +// Idem Model/Table/LdapConnectionsTable et AppController | ||
16 | +const DEFAULT_AUTH_TYPE = 'uid'; | ||
17 | + | ||
18 | + | ||
15 | /** | 19 | /** |
16 | * Users Controller | 20 | * Users Controller |
17 | * | 21 | * |
@@ -279,11 +283,19 @@ class UsersController extends AppController { | @@ -279,11 +283,19 @@ class UsersController extends AppController { | ||
279 | } | 283 | } |
280 | private function _getCurrentUserLoginFromSession($user_infos = null) { | 284 | private function _getCurrentUserLoginFromSession($user_infos = null) { |
281 | if (!$user_infos) $user_infos = $this->_getCurrentUserInfosFromSession(); | 285 | if (!$user_infos) $user_infos = $this->_getCurrentUserInfosFromSession(); |
286 | + if (! $user_infos) throw new \ErrorException("Pas d'utilisateur défini dans la session !!!"); | ||
282 | //debug($user_infos); | 287 | //debug($user_infos); |
283 | // "Pallier Etienne" | 288 | // "Pallier Etienne" |
284 | //$user_login_field_name = $this->authenticationType; | 289 | //$user_login_field_name = $this->authenticationType; |
285 | - $user_login_field_name = isset($user_infos['uid']) ? 'uid' : 'samaccountname'; | ||
286 | - return $user_infos ? $user_infos[$user_login_field_name][0] : 'user_login'; | 290 | + //$user_login_field_name = isset($user_infos['uid']) ? 'uid' : 'samaccountname'; |
291 | + $user_login_field_name = isset($user_infos[DEFAULT_AUTH_TYPE]) ? DEFAULT_AUTH_TYPE : 'samaccountname'; | ||
292 | + if (! isset($user_infos[$user_login_field_name])) { | ||
293 | + debug($user_login_field_name); | ||
294 | + debug($user_infos); | ||
295 | + throw new \ErrorException("La variable $user_infos ne contient pas le user login (ni champ 'uid' ni champ 'samaccountname')"); | ||
296 | + } | ||
297 | + //return $user_infos ? $user_infos[$user_login_field_name][0] : 'user_login'; | ||
298 | + return $user_infos[$user_login_field_name][0]; | ||
287 | } | 299 | } |
288 | private function _getCurrentUserEntityFromSession_ORIG($session_user = null) { | 300 | private function _getCurrentUserEntityFromSession_ORIG($session_user = null) { |
289 | $user_fullname = $this->_getCurrentUserFullNameFromSession($session_user); | 301 | $user_fullname = $this->_getCurrentUserFullNameFromSession($session_user); |
src/Model/Entity/User.php
@@ -59,7 +59,8 @@ class User extends Entity | @@ -59,7 +59,8 @@ class User extends Entity | ||
59 | 59 | ||
60 | // Ce qui s'affiche quand on fait echo $entity (ou echo $this) | 60 | // Ce qui s'affiche quand on fait echo $entity (ou echo $this) |
61 | // ATTENTION : nom = "Nom Prénom" | 61 | // ATTENTION : nom = "Nom Prénom" |
62 | - public function __toString() { return $this->nom; } | 62 | + //public function __toString() { return $this->nom; } |
63 | + public function __toString() { return $this->nom ? $this->nom : 'Nom Prénom'; } | ||
63 | 64 | ||
64 | 65 | ||
65 | // (EP 20200504) - Champs virtuels | 66 | // (EP 20200504) - Champs virtuels |
src/Model/Table/LdapConnectionsTable.php
@@ -7,12 +7,17 @@ use Cake\Auth\DefaultPasswordHasher; | @@ -7,12 +7,17 @@ use Cake\Auth\DefaultPasswordHasher; | ||
7 | use Cake\Core\Exception\Exception; | 7 | use Cake\Core\Exception\Exception; |
8 | use App\Model\Entity\User; | 8 | use App\Model\Entity\User; |
9 | 9 | ||
10 | +// Idem Controller/UsersController et AppController | ||
11 | +const DEFAULT_AUTH_TYPE = 'uid'; | ||
12 | + | ||
10 | 13 | ||
11 | class LdapConnectionsTable extends AppTable | 14 | class LdapConnectionsTable extends AppTable |
12 | { | 15 | { |
13 | - | 16 | + |
14 | private $DEBUG_MODE; // read from config | 17 | private $DEBUG_MODE; // read from config |
15 | 18 | ||
19 | + private $authenticationType; | ||
20 | + | ||
16 | // (EP 23/5/19) Optimisation: | 21 | // (EP 23/5/19) Optimisation: |
17 | // Les utilisateurs sont stockés dans un cache (BD) | 22 | // Les utilisateurs sont stockés dans un cache (BD) |
18 | // pour limiter les accès au LDAP | 23 | // pour limiter les accès au LDAP |
@@ -28,7 +33,6 @@ class LdapConnectionsTable extends AppTable | @@ -28,7 +33,6 @@ class LdapConnectionsTable extends AppTable | ||
28 | 33 | ||
29 | private $baseDn; | 34 | private $baseDn; |
30 | 35 | ||
31 | - private $authenticationType; | ||
32 | 36 | ||
33 | private $filter; | 37 | private $filter; |
34 | 38 | ||
@@ -195,9 +199,14 @@ class LdapConnectionsTable extends AppTable | @@ -195,9 +199,14 @@ class LdapConnectionsTable extends AppTable | ||
195 | ], | 199 | ], |
196 | // Login ("uid" for IRAP, "samaccountname" for CRAL) | 200 | // Login ("uid" for IRAP, "samaccountname" for CRAL) |
197 | //$this->authenticationType => [ | 201 | //$this->authenticationType => [ |
202 | + /* | ||
198 | 'uid' => [ | 203 | 'uid' => [ |
199 | $user['uid'] | 204 | $user['uid'] |
200 | ], | 205 | ], |
206 | + */ | ||
207 | + DEFAULT_AUTH_TYPE => [ | ||
208 | + $user[DEFAULT_AUTH_TYPE] | ||
209 | + ], | ||
201 | // Pass | 210 | // Pass |
202 | 'userpassword' => [ | 211 | 'userpassword' => [ |
203 | $user['userpassword'] | 212 | $user['userpassword'] |
@@ -365,7 +374,7 @@ class LdapConnectionsTable extends AppTable | @@ -365,7 +374,7 @@ class LdapConnectionsTable extends AppTable | ||
365 | 374 | ||
366 | // (EP 202102) bugfix, en mode fakldap, on est toujours en 'uid' | 375 | // (EP 202102) bugfix, en mode fakldap, on est toujours en 'uid' |
367 | //$this->authenticationType = $config->ldap_authenticationType; | 376 | //$this->authenticationType = $config->ldap_authenticationType; |
368 | - $this->authenticationType = 'uid'; | 377 | + $this->authenticationType = DEFAULT_AUTH_TYPE; |
369 | if (empty($this->fakeLDAPUsers)) | 378 | if (empty($this->fakeLDAPUsers)) |
370 | $this->fakeLDAPUsers = $this->_buildFakeLdapUsers(); | 379 | $this->fakeLDAPUsers = $this->_buildFakeLdapUsers(); |
371 | return true; | 380 | return true; |
@@ -468,7 +477,7 @@ class LdapConnectionsTable extends AppTable | @@ -468,7 +477,7 @@ class LdapConnectionsTable extends AppTable | ||
468 | debug($user); | 477 | debug($user); |
469 | */ | 478 | */ |
470 | //if ($login == $user[$this->authenticationType][0]) | 479 | //if ($login == $user[$this->authenticationType][0]) |
471 | - if ($login == $user['uid'][0]) | 480 | + if ($login == $user[DEFAULT_AUTH_TYPE][0]) |
472 | return $user; | 481 | return $user; |
473 | } | 482 | } |
474 | return FALSE; | 483 | return FALSE; |
@@ -1110,7 +1119,7 @@ class LdapConnectionsTable extends AppTable | @@ -1110,7 +1119,7 @@ class LdapConnectionsTable extends AppTable | ||
1110 | // if ($user[$this->authenticationType][0] == "_NouvelUtilisateur_username" && $user['userpassword'][0] == "_NouvelUtilisateur_password") return $user; | 1119 | // if ($user[$this->authenticationType][0] == "_NouvelUtilisateur_username" && $user['userpassword'][0] == "_NouvelUtilisateur_password") return $user; |
1111 | // Est-ce le user FAKE LDAP par defaut (_fake_ldap_user_) ? si oui, on le laisse passer | 1120 | // Est-ce le user FAKE LDAP par defaut (_fake_ldap_user_) ? si oui, on le laisse passer |
1112 | //if ($user_fetched[$this->authenticationType][0] == $this->_getTheFakeLdapUser()['login'] && $user_fetched['userpassword'][0] == $this->_getTheFakeLdapUser()['pass']) | 1121 | //if ($user_fetched[$this->authenticationType][0] == $this->_getTheFakeLdapUser()['login'] && $user_fetched['userpassword'][0] == $this->_getTheFakeLdapUser()['pass']) |
1113 | - if ($user_fetched['uid'][0] == $this->_getTheFakeLdapUser()['login'] && $user_fetched['userpassword'][0] == $this->_getTheFakeLdapUser()['pass']) | 1122 | + if ($user_fetched[DEFAULT_AUTH_TYPE][0] == $this->_getTheFakeLdapUser()['login'] && $user_fetched['userpassword'][0] == $this->_getTheFakeLdapUser()['pass']) |
1114 | return $user_fetched; | 1123 | return $user_fetched; |
1115 | /* | 1124 | /* |
1116 | debug("user_password = ".$user_password); | 1125 | debug("user_password = ".$user_password); |