Commit ffc7fb210e95cadc964b23bbba3423683f4c6775
1 parent
d52d9e45
Exists in
master
and in
2 other branches
Bugfix QrCode : http et https bien gérés
Aussi: Retour exception si table configurations vide
Showing
5 changed files
with
53 additions
and
17 deletions
Show diff stats
README.md
... | ... | @@ -53,13 +53,12 @@ Logiciel testé et validé sur les configurations suivantes : |
53 | 53 | |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | -Date: 21/05/2019 | |
57 | -Version: 2.12.20 | |
56 | +Date: 23/05/2019 | |
57 | +Version: 2.12.21 | |
58 | 58 | Author: EP |
59 | 59 | Commentaire: |
60 | - Bugfix actions sur pdf interdites | |
61 | - Simplifications vues materiels/view et index | |
62 | - | |
60 | + Bugfix QrCode : http et https bien gérés | |
61 | + Retour exception si table configurations vide | |
63 | 62 | |
64 | 63 | IMPORTANT : |
65 | 64 | - Pour connaitre la version actuelle, taper "./VERSION" |
... | ... | @@ -95,10 +94,11 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https |
95 | 94 | |
96 | 95 | ----------------------------------------------------------------------------------------------------------- |
97 | 96 | |
98 | -21/05/2019 Version: 2.12.18-19 (EP) | |
99 | - Bugfix affichage boutons vue matériel (parfois 2e ligne chevauchait 1ère ligne) | |
100 | - (Enorme) Simplification des vues (toujours en cours) | |
101 | 97 | |
98 | +21/05/2019 Version: 2.12.18-20 (EP) | |
99 | + Bugfix affichage boutons vue matériel (parfois 2e ligne chevauchait 1ère ligne) | |
100 | + (Enorme) Simplification des vues materiels/view et index (toujours en cours) | |
101 | + Bugfix actions sur pdf interdites | |
102 | 102 | |
103 | 103 | 17/05/2019 Version: 2.12.15-17 (EP) |
104 | 104 | Bugfix modif matos: on ne doit plus pouvoir modifier un materiel validé (ou plus) => il faut le dé-valider avant ! | ... | ... |
src/Controller/AppController.php
... | ... | @@ -390,6 +390,8 @@ class AppController extends Controller |
390 | 390 | ->first(); |
391 | 391 | */ |
392 | 392 | $this->confLabinvent = TableRegistry::getTableLocator()->get('Configurations')->find()->first(); |
393 | + // (EP 23/5/19) Exception si la config est vide, inutile d'aller plus loin ! | |
394 | + if (is_null($this->confLabinvent)) throw new \Exception("EXCEPTION: La table 'configurations' de la base de données est vide"); | |
393 | 395 | } |
394 | 396 | |
395 | 397 | /** | ... | ... |
src/Model/Table/LdapConnectionsTable.php
... | ... | @@ -10,6 +10,11 @@ use Cake\Core\Exception\Exception; |
10 | 10 | class LdapConnectionsTable extends AppTable |
11 | 11 | { |
12 | 12 | |
13 | + // (EP 23/5/19) Optimisation: | |
14 | + // Les utilisateurs sont stockés dans un cache (BD) | |
15 | + // pour limiter les accès au LDAP | |
16 | + private $LDAP_CACHED = FALSE; | |
17 | + | |
13 | 18 | public $useTable = false; |
14 | 19 | |
15 | 20 | private $host; |
... | ... | @@ -392,12 +397,26 @@ class LdapConnectionsTable extends AppTable |
392 | 397 | } |
393 | 398 | |
394 | 399 | |
395 | - | |
396 | - // TODO: implement | |
397 | 400 | // REAL LDAP only |
398 | - private function checkAndFetchUserFromDB($user_login, $user_password) { | |
401 | + //TODO: | |
402 | + private function _formatUserFromDbAsLDAP($user) { | |
403 | + return $user; | |
404 | + } | |
405 | + | |
406 | + // REAL LDAP only | |
407 | + private function checkAndFetchLDAPUserFromDB($user_login, $user_password) { | |
399 | 408 | // Doit aussi return false si ce user_login est "périmé" (sa date "created" est > 2 mois par exemple), |
400 | 409 | // ce qui obligera à relire ses données dans le LDAP et donc se mettre à jour |
410 | + if (! $this->LDAP_CACHED) return FALSE; | |
411 | + // Search user in DB | |
412 | + $user = TableRegistry::getTableLocator()->get('Users')->find() | |
413 | + ->where([ | |
414 | + 'username' => $user_login | |
415 | + ]) | |
416 | + ->first(); | |
417 | + if (!is_null($user)) { | |
418 | + $user = $this->_formatUserFromDbAsLDAP($user); | |
419 | + } | |
401 | 420 | // By default, user is not in DB |
402 | 421 | return FALSE; |
403 | 422 | } |
... | ... | @@ -483,7 +502,7 @@ class LdapConnectionsTable extends AppTable |
483 | 502 | |
484 | 503 | // TODO: optimisation possible |
485 | 504 | // 1) Search user in CACHE (DB) |
486 | - $user_fetched = $this->checkAndFetchUserFromDB($user_login, $user_password); | |
505 | + $user_fetched = $this->checkAndFetchLDAPUserFromDB($user_login, $user_password); | |
487 | 506 | // 2) If not CACHED, search user in LDAP |
488 | 507 | if ($user_fetched === FALSE) { |
489 | 508 | |
... | ... | @@ -505,6 +524,10 @@ class LdapConnectionsTable extends AppTable |
505 | 524 | return $user_fetched[0]; |
506 | 525 | } |
507 | 526 | } |
527 | + else { | |
528 | + debug("user found in DB"); | |
529 | + debug($user_fetched); | |
530 | + } | |
508 | 531 | //return $user_fetched; // Noter que $user_fetched peut etre egal a FALSE (si pas trouvé) |
509 | 532 | } |
510 | 533 | |
... | ... | @@ -514,8 +537,8 @@ class LdapConnectionsTable extends AppTable |
514 | 537 | //debug($this->baseDn); |
515 | 538 | $user = $this->getFakeLdapUser($user_login); |
516 | 539 | // debug($user); |
517 | - if ($user === false) | |
518 | - return FALSE; | |
540 | + //if ($user === false) return FALSE; | |
541 | + if ($user !== false) { | |
519 | 542 | // $this->authenticationType peut valoir "uid" ou "cn"... (par défaut "uid" pour le fake ldap, à confirmer...) |
520 | 543 | // if ($user['uid'][0] == "_NouvelUtilisateur_username" && $user['userpassword'][0] == "_NouvelUtilisateur_password") return $user; |
521 | 544 | // if ($user[$this->authenticationType][0] == "_NouvelUtilisateur_username" && $user['userpassword'][0] == "_NouvelUtilisateur_password") return $user; |
... | ... | @@ -524,6 +547,7 @@ class LdapConnectionsTable extends AppTable |
524 | 547 | if ( (new DefaultPasswordHasher())->check($user_password,$user['userpassword'][0]) ) |
525 | 548 | return $user; |
526 | 549 | // if ($user != false && $user['userpassword'][0] == $password) { |
550 | + } | |
527 | 551 | } |
528 | 552 | |
529 | 553 | } | ... | ... |
src/Template/Materiels/view.ctp
... | ... | @@ -218,7 +218,10 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
218 | 218 | } |
219 | 219 | |
220 | 220 | // QRCODE (Url) |
221 | - $this->request->getSession()->write("qrUrl", $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI')); | |
221 | + //debug($this->request->env('REQUEST_SCHEME')); | |
222 | + $qrCodeUrl = $this->request->env('REQUEST_SCHEME').'://' . $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI'); | |
223 | + | |
224 | + $this->request->getSession()->write("qrUrl", $qrCodeUrl); | |
222 | 225 | $this->requestAction('/QrCodes/creer/'); |
223 | 226 | echo $this->Html->image('qrcodes/' . $this->request->getSession() |
224 | 227 | ->read("filename"), [ | ... | ... |
tests/TestCase/Controller/MaterielsControllerTest.php
... | ... | @@ -10,12 +10,17 @@ use Cake\Core\Configure; |
10 | 10 | use App\Controller\AppController; |
11 | 11 | use phpDocumentor\Reflection\Types\Boolean; |
12 | 12 | |
13 | + | |
14 | + | |
15 | + | |
13 | 16 | /** |
14 | 17 | * App\Controller\MaterielsController Test Case |
15 | 18 | */ |
16 | 19 | class MaterielsControllerTest extends General { |
17 | 20 | //class MaterielsControllerTest extends IntegrationTestCase { |
18 | 21 | |
22 | + // Si DEBUG, affiche plus d'infos | |
23 | + private $DEBUG=FALSE; | |
19 | 24 | |
20 | 25 | /** |
21 | 26 | * Fixtures |
... | ... | @@ -686,8 +691,10 @@ class MaterielsControllerTest extends General { |
686 | 691 | // Called by testMatCopy() just above |
687 | 692 | private function _testMatCopy($testnum, $COPIED, $role, $id, array $materiel_new_data=[], $num_inventaire=NULL) { |
688 | 693 | //debug("_testMatCopy numéro ".$testnum); |
689 | - echo("\n"); | |
690 | - echo("_testMatCopy (with role ".$role.") numéro ".$testnum." :"); | |
694 | + if ($this->DEBUG) { | |
695 | + echo("\n"); | |
696 | + echo("_testMatCopy (with role ".$role.") numéro ".$testnum." :"); | |
697 | + } | |
691 | 698 | $designation = isset($materiel_new_data->designation) ? $materiel_new_data->designation : 'matos 1 USER (C)'; |
692 | 699 | |
693 | 700 | // AVANT add | ... | ... |