Commit 92acc9fe1235ab07235a9147638a5ec3e62ed4b7
1 parent
da7f42f6
Exists in
master
and in
1 other branch
Harmonisation (v3.7.9.26)
- shortcuts dans AppController (donc disponible pour TOUS les controleurs) : - $this->u = user courant - $this->e = entité courante - $this->e_id = id de l'entité courante - $this->a = action en cours - $this->c = controleur en cours (?) - $this->getEntity($id=null) // id=null si matos courant - harmonisation des noms de méthodes pour MaterielsController : - $this->isCreated($id=null) // id=null si matos courant - $this->belongsToUser($username, $id=null) // id=null si matos courant et $this->belongsToCurrentUser($id=null) // id=null si matos courant - $this->isSameGroupAsUser($userlogin, $id=null) // id=null si matos courant et $this->isSameGroupAsCurrentUser($id=null) // // id=null si matos courant - harmonisation des méthodes dans entité Materiel (Entity) : - is_created, is_validated, is_tobearchived, is_archived - belongsToUser($username) // owned or declared by user - isSameGroupAsUser($usergroup1, $usergroup2) // is same group as user groups - ... - poursuite généralisation utilisation de la fonction isAuthorizedAction() partout où on a besoin de connaitre les droits d'un user (view, index, ...)
Showing
9 changed files
with
293 additions
and
137 deletions
Show diff stats
README.md
@@ -53,16 +53,31 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -53,16 +53,31 @@ Logiciel testé et validé sur les configurations suivantes : | ||
53 | 53 | ||
54 | VERSION ACTUELLE | 54 | VERSION ACTUELLE |
55 | 55 | ||
56 | -Date: 05/05/2020 | ||
57 | -Version: 3.7.9.25 | 56 | +Date: 07/05/2020 |
57 | +Version: 3.7.9.26 | ||
58 | Author: EP | 58 | Author: EP |
59 | Commentaire: | 59 | Commentaire: |
60 | Diverses améliorations, simplifications, refactorisations, optimisations : | 60 | Diverses améliorations, simplifications, refactorisations, optimisations : |
61 | - - LOG : ajout de messages log sur actions importantes (add, edit, delete, ...) | ||
62 | - - SIMPLIFICATION : Suppression des valeurs "N/A" (inutile et pose des problèmes) dans 4 tables : groupes_thematiques, groupes_metiers, sites, et type_documents | ||
63 | - => remplacement des liens vers ces champs par NULL dans tables materiels, suivis, emprunts, et documents !!! | ||
64 | - - Utilisation __toString() pour afficher une entité rapidement avec echo $entity | ||
65 | - - bugfix ACLs isAuthorizedAction() de Materiels => début de généralisation de l'utilisation de cette fonction partout où on a besoin de connaitre les droits d'un user (view, index, ...) | 61 | + Harmonisation : |
62 | + - shortcuts dans AppController (donc disponible pour TOUS les controleurs) : | ||
63 | + - $this->u = user courant | ||
64 | + - $this->e = entité courante | ||
65 | + - $this->e_id = id de l'entité courante | ||
66 | + - $this->a = action en cours | ||
67 | + - $this->c = controleur en cours (?) | ||
68 | + - $this->getEntity($id=null) // id=null si matos courant | ||
69 | + - harmonisation des noms de méthodes pour MaterielsController : | ||
70 | + - $this->isCreated($id=null) // id=null si matos courant | ||
71 | + - $this->belongsToUser($username, $id=null) // id=null si matos courant | ||
72 | + et $this->belongsToCurrentUser($id=null) // id=null si matos courant | ||
73 | + - $this->isSameGroupAsUser($userlogin, $id=null) // id=null si matos courant | ||
74 | + et $this->isSameGroupAsCurrentUser($id=null) // // id=null si matos courant | ||
75 | + - harmonisation des méthodes dans entité Materiel (Entity) : | ||
76 | + - is_created, is_validated, is_tobearchived, is_archived | ||
77 | + - belongsToUser($username) // owned or declared by user | ||
78 | + - isSameGroupAsUser($usergroup1, $usergroup2) // is same group as user groups | ||
79 | + - ... | ||
80 | + - poursuite généralisation utilisation de la fonction isAuthorizedAction() partout où on a besoin de connaitre les droits d'un user (view, index, ...) | ||
66 | 81 | ||
67 | IMPORTANT : | 82 | IMPORTANT : |
68 | - Pour connaitre la version actuelle, taper "./VERSION" | 83 | - Pour connaitre la version actuelle, taper "./VERSION" |
src/Controller/AppController.php
@@ -66,15 +66,46 @@ class AppController extends Controller | @@ -66,15 +66,46 @@ class AppController extends Controller | ||
66 | protected $SUPERADMIN_CAN_DO_EVERYTHING = false; // (prod) Par défaut (false), il se comporte un peu comme ADMIN | 66 | protected $SUPERADMIN_CAN_DO_EVERYTHING = false; // (prod) Par défaut (false), il se comporte un peu comme ADMIN |
67 | //protected $SUPERADMIN_CAN_DO_EVERYTHING = true; // (dev only) no limit, peut TOUT faire (attention, pas en prod svp !!!) | 67 | //protected $SUPERADMIN_CAN_DO_EVERYTHING = true; // (dev only) no limit, peut TOUT faire (attention, pas en prod svp !!!) |
68 | 68 | ||
69 | - protected $confLabinvent; | ||
70 | - protected $action; | ||
71 | - protected $entity; | ||
72 | - protected $entity_id; | 69 | + protected $confLabinvent = null; |
70 | + | ||
71 | + // Le Controleur courant | ||
72 | + protected $c = null; | ||
73 | + | ||
74 | + // L'Action courante | ||
75 | + //protected $action = null; | ||
76 | + protected $a = null; | ||
77 | + | ||
78 | + /* La table courante (objet Table) | ||
79 | + * | ||
80 | + * $t = TableRegistry::getTableLocator()->get('Materiels'); (ou autre entité telle que 'Suivis' par exemple...) | ||
81 | + * | ||
82 | + */ | ||
83 | + protected $t = null; | ||
84 | + | ||
85 | + /* L'entité courante (objet Entity) | ||
86 | + * | ||
87 | + * $e = $t->newEntity(); | ||
88 | + * ou encore | ||
89 | + * $e = $t->get(12); | ||
90 | + * ou encore | ||
91 | + * $e = $t->find(...)->first(); | ||
92 | + * ou encore | ||
93 | + * $e = $t->find(...)->last(); | ||
94 | + * ... | ||
95 | + */ | ||
96 | + //protected $entity =null; | ||
97 | + protected $e = null; // remplace $entity | ||
98 | + | ||
99 | + // id de l'entité courante (shortcut pour $this->e->id) | ||
100 | + //protected $entity_id = null; | ||
101 | + protected $e_id = null; // remplace $entity_id | ||
102 | + | ||
103 | + // L'utilisateur courant (objet User Entity) | ||
73 | // Current (priviledged) USER (if so, otherwise = NULL) from DB (Entity class) | 104 | // Current (priviledged) USER (if so, otherwise = NULL) from DB (Entity class) |
74 | //private $CURRENT_PRIVILEDGED_USER = null; | 105 | //private $CURRENT_PRIVILEDGED_USER = null; |
75 | - protected $current_user_entity = null; | 106 | + //protected $current_user_entity = null; |
107 | + protected $u = null; // remplace $current_user_entity | ||
76 | protected $userName = null; | 108 | protected $userName = null; |
77 | - | ||
78 | // Current ROLE (by default = "Utilisateur") | 109 | // Current ROLE (by default = "Utilisateur") |
79 | private $CURRENT_ROLE = null; | 110 | private $CURRENT_ROLE = null; |
80 | 111 | ||
@@ -386,7 +417,8 @@ class AppController extends Controller | @@ -386,7 +417,8 @@ class AppController extends Controller | ||
386 | /* (EP 20200428) | 417 | /* (EP 20200428) |
387 | * | 418 | * |
388 | * Méthode pour optimiser les accès à la BD. | 419 | * Méthode pour optimiser les accès à la BD. |
389 | - * Retourne l'entité concernée par l'action. | 420 | + * Retourne l'entité dont l'id est $id (en la mettant en cache pour éviter de la rechercher 2 fois) |
421 | + * Si $id = null => retourne l'entité courante ($this->e) (entité concernée par l'action en cours) | ||
390 | * | 422 | * |
391 | * Cette méthode ne doit être appelée que lorsque c'est approprié | 423 | * Cette méthode ne doit être appelée que lorsque c'est approprié |
392 | * (actions 'edit', 'view', ..., mais pas 'add', 'find', 'index', ...) | 424 | * (actions 'edit', 'view', ..., mais pas 'add', 'find', 'index', ...) |
@@ -395,37 +427,61 @@ class AppController extends Controller | @@ -395,37 +427,61 @@ class AppController extends Controller | ||
395 | * Optimisation : l'entité n'est récupérée dans la BD qu'une seule fois pour toutes | 427 | * Optimisation : l'entité n'est récupérée dans la BD qu'une seule fois pour toutes |
396 | * | 428 | * |
397 | */ | 429 | */ |
430 | + // PHP7 only | ||
431 | + //protected function getEntity($id=null) : Entity { | ||
432 | + // PHP>=5 | ||
398 | protected function getEntity($id=null) { | 433 | protected function getEntity($id=null) { |
399 | // Si pas d'id => exception (stop) | 434 | // Si pas d'id => exception (stop) |
400 | - //assert($this->entity_id>0); | ||
401 | - if (!$this->entity_id && !$id) throw new \Exception(__("cette methode doit etre appelée avec un id déjà positionné !!!")); | ||
402 | - | ||
403 | - // Si l'entité actuellement en mémoire n'est pas la bonne, la mettre à null pour obliger à la recharger | ||
404 | - if ($id && $this->entity && $this->entity->id != $id) $this->entity = null; | ||
405 | - | ||
406 | - // Les 3 sont possibles | ||
407 | - //$model = $this->request->getParam('controller'); // ex: Materiels | ||
408 | - //$model = $this->name; // ex: Materiels | ||
409 | - $model = $this->modelClass; // ex: Materiels | ||
410 | - | ||
411 | - /* | ||
412 | - debug("model2"); | ||
413 | - $model = $this->$model; | ||
414 | - debug($model); | ||
415 | - */ | ||
416 | - | ||
417 | - //ex: if (! $this->entity) $this->entity = $this->Materiels->get($this->entity_id); | ||
418 | - if (!$this->entity) $this->entity = $this->$model->get($this->entity_id); | 435 | + //assert($this->e_id>0); |
436 | + if (!$this->e_id && !$id) throw new \Exception(__("cette methode doit etre appelée avec un id déjà positionné !!!")); | ||
437 | + | ||
438 | + // Par défaut id = id de l'entité courante | ||
439 | + if (is_null($id)) $id = $this->e_id; | ||
440 | + | ||
441 | + // Si l'entité courante n'est pas la bonne, la mettre à null pour obliger à la recharger | ||
442 | + //if ($id && $this->e && $this->e->id!=$id) $this->e = null; | ||
443 | + //if ($id && $this->e && $this->e_id!=$id) $this->e = null; | ||
444 | + if ($this->e && $this->e_id!=$id) $this->e = null; | ||
445 | + | ||
446 | + if (!$this->e) { | ||
447 | + // Les 3 sont possibles | ||
448 | + //$model = $this->request->getParam('controller'); // ex: Materiels | ||
449 | + //$model = $this->name; // ex: Materiels | ||
450 | + $model = $this->modelClass; // ex: Materiels | ||
451 | + /* | ||
452 | + debug("model2"); | ||
453 | + $model = $this->$model; | ||
454 | + debug($model); | ||
455 | + */ | ||
456 | + //ex: if (! $this->e) $this->e = $this->Materiels->get($this->e_id); | ||
457 | + //$this->e = $this->$model->get($this->e_id); | ||
458 | + $this->e = $this->$model->get($id); | ||
459 | + $this->e_id = $this->e->id; | ||
460 | + } | ||
419 | /* | 461 | /* |
420 | * Avec les entités associées : | 462 | * Avec les entités associées : |
421 | - if (! $this->entity) $this->entity = $this->$model->get($this->entity_id, [ | 463 | + if (! $this->e) $this->e = $this->$model->get($this->e_id, [ |
422 | 'contain' => ['Comments'] | 464 | 'contain' => ['Comments'] |
423 | ]); | 465 | ]); |
424 | */ | 466 | */ |
425 | - //debug($this->entity); | ||
426 | - return $this->entity; | 467 | + //debug($this->e); |
468 | + return $this->e; | ||
427 | } | 469 | } |
428 | 470 | ||
471 | + | ||
472 | + public function getUsersTable() { return TableRegistry::getTableLocator()->get('Users'); } | ||
473 | + // Retourne l'entity User qui a le login $userlogin ("epallier") | ||
474 | + public function getUserByLogin($userlogin) { | ||
475 | + if ($this->u && $this->u->username == $userlogin) return $this->u; | ||
476 | + //return $users->find()->where(['username' => $userlogin])->first(); | ||
477 | + return $this->getUsersTable()->findByUsername($userlogin); | ||
478 | + } | ||
479 | + // Retourne l'entity User qui a le nom complet $fullname ("Pallier Etienne") | ||
480 | + public function getUserByFullname($fullname) { | ||
481 | + if ($this->u && $this->u->nom == $fullname) return $this->u; | ||
482 | + //return $users->find()->where(['username' => $userlogin])->first(); | ||
483 | + return $this->getUsersTable()->findByNom($fullname); | ||
484 | + } | ||
429 | 485 | ||
430 | /** | 486 | /** |
431 | * (EP) | 487 | * (EP) |
@@ -512,14 +568,14 @@ class AppController extends Controller | @@ -512,14 +568,14 @@ class AppController extends Controller | ||
512 | 568 | ||
513 | // error_log($action); | 569 | // error_log($action); |
514 | //$this->myDebug("- action is $action"); | 570 | //$this->myDebug("- action is $action"); |
515 | - $this->myDebug("- action is $this->action"); | 571 | + $this->myDebug("- action is $this->a"); |
516 | 572 | ||
517 | // On autorise ou pas l’action demandée : | 573 | // On autorise ou pas l’action demandée : |
518 | // - Super-Admin peut accéder à toutes les actions | 574 | // - Super-Admin peut accéder à toutes les actions |
519 | //if ($role == 'Super Administrateur') return true; | 575 | //if ($role == 'Super Administrateur') return true; |
520 | if ($this->USER_IS_SUPERADMIN) return true; | 576 | if ($this->USER_IS_SUPERADMIN) return true; |
521 | // - Actions générales accessibles à TOUS les roles (profils), pour TOUT controleur | 577 | // - Actions générales accessibles à TOUS les roles (profils), pour TOUT controleur |
522 | - if (in_array($this->action, [ | 578 | + if (in_array($this->a, [ |
523 | 'index', | 579 | 'index', |
524 | 'view', | 580 | 'view', |
525 | 'add', | 581 | 'add', |
@@ -564,7 +620,7 @@ class AppController extends Controller | @@ -564,7 +620,7 @@ class AppController extends Controller | ||
564 | } | 620 | } |
565 | public function getUserEntity($user = null) { | 621 | public function getUserEntity($user = null) { |
566 | //if (! $this->CURRENT_PRIVILEDGED_USER) { | 622 | //if (! $this->CURRENT_PRIVILEDGED_USER) { |
567 | - if (! $this->current_user_entity) { | 623 | + if (! $this->u) { |
568 | $configuration = $this->confLabinvent; | 624 | $configuration = $this->confLabinvent; |
569 | $ldapAuthType = $configuration->ldap_authenticationType; | 625 | $ldapAuthType = $configuration->ldap_authenticationType; |
570 | $username = $user ? $user[$ldapAuthType] : $this->LdapAuth->user($ldapAuthType); | 626 | $username = $user ? $user[$ldapAuthType] : $this->LdapAuth->user($ldapAuthType); |
@@ -575,9 +631,9 @@ class AppController extends Controller | @@ -575,9 +631,9 @@ class AppController extends Controller | ||
575 | ->first(); | 631 | ->first(); |
576 | // ->where(['username' => $this->LdapAuth->user('cn')[0]]) | 632 | // ->where(['username' => $this->LdapAuth->user('cn')[0]]) |
577 | // if (! $priviledgedUser) $priviledgedUser = "Unpriviledged User (not in table utilisateurs)"; | 633 | // if (! $priviledgedUser) $priviledgedUser = "Unpriviledged User (not in table utilisateurs)"; |
578 | - $this->current_user_entity = $priviledgedUser; | 634 | + $this->u = $priviledgedUser; |
579 | } | 635 | } |
580 | - return $this->current_user_entity; | 636 | + return $this->u; |
581 | } | 637 | } |
582 | 638 | ||
583 | public function getUserRole($user = null) | 639 | public function getUserRole($user = null) |
@@ -804,22 +860,25 @@ class AppController extends Controller | @@ -804,22 +860,25 @@ class AppController extends Controller | ||
804 | // Affichages pour debug | 860 | // Affichages pour debug |
805 | //pr($event); | 861 | //pr($event); |
806 | $this->myDebug("step 1B (general): AppController.beforeFilter()"); | 862 | $this->myDebug("step 1B (general): AppController.beforeFilter()"); |
863 | + | ||
807 | $controllerName = $this->request->getParam('controller'); | 864 | $controllerName = $this->request->getParam('controller'); |
808 | $this->myDebug("- controller passed : $controllerName"); | 865 | $this->myDebug("- controller passed : $controllerName"); |
866 | + | ||
809 | $passedArgs = $this->request->getParam('pass'); | 867 | $passedArgs = $this->request->getParam('pass'); |
810 | $this->myDebug("- args passed : ", $passedArgs); | 868 | $this->myDebug("- args passed : ", $passedArgs); |
869 | + | ||
811 | $query = $this->request->getQueryParams(); | 870 | $query = $this->request->getQueryParams(); |
812 | $this->myDebug("- query passed : ", $query); | 871 | $this->myDebug("- query passed : ", $query); |
813 | 872 | ||
814 | // Initialisations pour la suite | 873 | // Initialisations pour la suite |
815 | // - L'entité concernée par l'action | 874 | // - L'entité concernée par l'action |
816 | // Par défaut null car certaines actions n'ont pas d'entité (ex : 'add', 'find', 'index', ...) | 875 | // Par défaut null car certaines actions n'ont pas d'entité (ex : 'add', 'find', 'index', ...) |
817 | - $this->entity = null; | 876 | + $this->e = null; |
818 | // - L'action demandée et son id le cas échéant (nul par défaut, égal 0) | 877 | // - L'action demandée et son id le cas échéant (nul par défaut, égal 0) |
819 | - $this->action = $this->getActionPassed(); | ||
820 | - $this->myDebug("- action passed : ".$this->action); | ||
821 | - $this->entity_id = $this->getIdPassed(); | ||
822 | - $this->myDebug("- id passed : ".$this->action); | 878 | + $this->a = $this->getActionPassed(); |
879 | + $this->myDebug("- action passed : ".$this->a); | ||
880 | + $this->e_id = $this->getIdPassed(); | ||
881 | + $this->myDebug("- id passed : ".$this->a); | ||
823 | 882 | ||
824 | parent::beforeFilter($event); | 883 | parent::beforeFilter($event); |
825 | 884 | ||
@@ -867,11 +926,11 @@ class AppController extends Controller | @@ -867,11 +926,11 @@ class AppController extends Controller | ||
867 | // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié | 926 | // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié |
868 | // (c'est à dire s'il n'est pas dans la table "utilisateurs") | 927 | // (c'est à dire s'il n'est pas dans la table "utilisateurs") |
869 | //$this->priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); | 928 | //$this->priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); |
870 | - $this->current_user_entity = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); | 929 | + $this->u = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); |
871 | //$role = $this->getUserRole(); | 930 | //$role = $this->getUserRole(); |
872 | $this->userRole = $this->getUserRole(); | 931 | $this->userRole = $this->getUserRole(); |
873 | $profile = self::PROFILES["$this->userRole"]; | 932 | $profile = self::PROFILES["$this->userRole"]; |
874 | - $this->myDebug("- priviledgedUser is {$this->current_user_entity}"); | 933 | + $this->myDebug("- priviledgedUser is {$this->u}"); |
875 | $this->myDebug("- userRole is {$this->getUserRole()}", "- profile is: $profile"); | 934 | $this->myDebug("- userRole is {$this->getUserRole()}", "- profile is: $profile"); |
876 | // L'utilisateur connecté (return null si pas connecté) | 935 | // L'utilisateur connecté (return null si pas connecté) |
877 | // $this->Auth->user('id'); | 936 | // $this->Auth->user('id'); |
@@ -891,7 +950,7 @@ class AppController extends Controller | @@ -891,7 +950,7 @@ class AppController extends Controller | ||
891 | $this->set('role', $this->userRole); | 950 | $this->set('role', $this->userRole); |
892 | $this->set('profile', $profile); | 951 | $this->set('profile', $profile); |
893 | $this->set('username', $this->getCurrentUserName()); | 952 | $this->set('username', $this->getCurrentUserName()); |
894 | - $this->set('priviledgedUser', $this->current_user_entity); | 953 | + $this->set('priviledgedUser', $this->u); |
895 | 954 | ||
896 | $this->set('USER_IS_UTILISATEUR', $this->USER_IS_UTILISATEUR); | 955 | $this->set('USER_IS_UTILISATEUR', $this->USER_IS_UTILISATEUR); |
897 | $this->set('USER_IS_ADMIN', $this->USER_IS_ADMIN); | 956 | $this->set('USER_IS_ADMIN', $this->USER_IS_ADMIN); |
@@ -1197,24 +1256,24 @@ class AppController extends Controller | @@ -1197,24 +1256,24 @@ class AppController extends Controller | ||
1197 | * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL | 1256 | * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL |
1198 | */ | 1257 | */ |
1199 | //$action = $this->getActionPassed(); | 1258 | //$action = $this->getActionPassed(); |
1200 | - if (in_array($this->action, array( | 1259 | + if (in_array($this->a, array( |
1201 | 'add', | 1260 | 'add', |
1202 | 'edit', | 1261 | 'edit', |
1203 | 'view', | 1262 | 'view', |
1204 | 'index' | 1263 | 'index' |
1205 | ))) { | 1264 | ))) { |
1206 | - $hiddenFields = $this->getHiddenFieldsForAction($this->action); | 1265 | + $hiddenFields = $this->getHiddenFieldsForAction($this->a); |
1207 | $this->set('hiddenFields', $hiddenFields); | 1266 | $this->set('hiddenFields', $hiddenFields); |
1208 | $this->myDebug(compact("hiddenFields")); | 1267 | $this->myDebug(compact("hiddenFields")); |
1209 | - if (in_array($this->action, array( | 1268 | + if (in_array($this->a, array( |
1210 | 'add', | 1269 | 'add', |
1211 | 'edit' | 1270 | 'edit' |
1212 | ))) { | 1271 | ))) { |
1213 | - $mandatoryFields = $this->getMandatoryFieldsForAction($this->action); | 1272 | + $mandatoryFields = $this->getMandatoryFieldsForAction($this->a); |
1214 | $this->set('mandatoryFields', $mandatoryFields); | 1273 | $this->set('mandatoryFields', $mandatoryFields); |
1215 | - $readOnlyFields = $this->getReadOnlyFieldsForAction($this->action); | 1274 | + $readOnlyFields = $this->getReadOnlyFieldsForAction($this->a); |
1216 | $this->set('readOnlyFields', $readOnlyFields); | 1275 | $this->set('readOnlyFields', $readOnlyFields); |
1217 | - $haveDefaultValueFields = $this->getDefaultValueFieldsForAction($this->action); | 1276 | + $haveDefaultValueFields = $this->getDefaultValueFieldsForAction($this->a); |
1218 | 1277 | ||
1219 | // only for DEBUG : | 1278 | // only for DEBUG : |
1220 | //$this->myDebug("mandat, ro, default fields=", $mandatoryFields, $readOnlyFields, $haveDefaultValueFields); | 1279 | //$this->myDebug("mandat, ro, default fields=", $mandatoryFields, $readOnlyFields, $haveDefaultValueFields); |
src/Controller/DocumentsController.php
@@ -269,8 +269,9 @@ class DocumentsController extends AppController | @@ -269,8 +269,9 @@ class DocumentsController extends AppController | ||
269 | * @param $IS_ADD: True = add ; False = edit | 269 | * @param $IS_ADD: True = add ; False = edit |
270 | * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. | 270 | * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. |
271 | */ | 271 | */ |
272 | - private function add_or_edit($IS_ADD, $id=null, $valeurs=null, $erreurs=null) { | ||
273 | - | 272 | + protected function add_or_edit($IS_ADD, $id=null, $valeurs=null, $erreurs=null, |
273 | + // uniquement à cause de parent::add_or_edit() : | ||
274 | + $entity_name=null, array $associated_entities=[], $with_parent=false) { | ||
274 | $this->myDebug("step 3: DocumentsController.add_or_edit()"); | 275 | $this->myDebug("step 3: DocumentsController.add_or_edit()"); |
275 | 276 | ||
276 | $document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => []]); | 277 | $document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => []]); |
src/Controller/MaterielsController.php
@@ -6,6 +6,7 @@ use Cake\ORM\TableRegistry; | @@ -6,6 +6,7 @@ use Cake\ORM\TableRegistry; | ||
6 | use Cake\Mailer\Email; | 6 | use Cake\Mailer\Email; |
7 | #use Cake\ORM\Locator\TableLocator; | 7 | #use Cake\ORM\Locator\TableLocator; |
8 | use Cake\Auth\FallbackPasswordHasher; | 8 | use Cake\Auth\FallbackPasswordHasher; |
9 | +use App\Model\Entity\Materiel; | ||
9 | 10 | ||
10 | /** | 11 | /** |
11 | * Materiels Controller | 12 | * Materiels Controller |
@@ -260,28 +261,28 @@ class MaterielsController extends AppController { | @@ -260,28 +261,28 @@ class MaterielsController extends AppController { | ||
260 | $this->myDebug("step 2A (specific): MaterielsController.isAuthorized(user)"); | 261 | $this->myDebug("step 2A (specific): MaterielsController.isAuthorized(user)"); |
261 | $this->myDebug("- user is:", $user); | 262 | $this->myDebug("- user is:", $user); |
262 | 263 | ||
263 | - //$this->current_user_entity = $this->getUserEntity(); | ||
264 | - assert($this->current_user_entity != null); | ||
265 | - if ($this->current_user_entity == null) throw new \Exception("pas d'utilisateur défini !!!"); | 264 | + //$this->u = $this->getUserEntity(); |
265 | + assert($this->u != null); | ||
266 | + if ($this->u == null) throw new \Exception("pas d'utilisateur défini !!!"); | ||
266 | 267 | ||
267 | if ($this->isLabinventDebugMode()) { | 268 | if ($this->isLabinventDebugMode()) { |
268 | 269 | ||
269 | - debug($this->current_user_entity); | 270 | + debug($this->u); |
270 | 271 | ||
271 | debug("user is xxx :"); | 272 | debug("user is xxx :"); |
272 | - debug($this->current_user_entity->is_user); | ||
273 | - debug($this->current_user_entity->is_resp); | ||
274 | - debug($this->current_user_entity->is_admin); | ||
275 | - debug($this->current_user_entity->is_adminplus); | ||
276 | - debug($this->current_user_entity->is_super); | 273 | + debug($this->u->is_user); |
274 | + debug($this->u->is_resp); | ||
275 | + debug($this->u->is_admin); | ||
276 | + debug($this->u->is_adminplus); | ||
277 | + debug($this->u->is_super); | ||
277 | 278 | ||
278 | debug("user is xxx or more :"); | 279 | debug("user is xxx or more :"); |
279 | - debug($this->current_user_entity->is_resp_or_more); | ||
280 | - debug($this->current_user_entity->is_admin_or_more); | 280 | + debug($this->u->is_resp_or_more); |
281 | + debug($this->u->is_admin_or_more); | ||
281 | 282 | ||
282 | debug("user is xxx or less :"); | 283 | debug("user is xxx or less :"); |
283 | - debug($this->current_user_entity->is_resp_or_less); | ||
284 | - debug($this->current_user_entity->is_admin_or_less); | 284 | + debug($this->u->is_resp_or_less); |
285 | + debug($this->u->is_admin_or_less); | ||
285 | 286 | ||
286 | } | 287 | } |
287 | 288 | ||
@@ -318,7 +319,7 @@ class MaterielsController extends AppController { | @@ -318,7 +319,7 @@ class MaterielsController extends AppController { | ||
318 | 319 | ||
319 | // $id = (int) $this->request->getParam('pass.0'); | 320 | // $id = (int) $this->request->getParam('pass.0'); |
320 | //$id = $this->getIdPassed(); | 321 | //$id = $this->getIdPassed(); |
321 | - ///$this->entity_id = $this->getIdPassed(); | 322 | + ///$this->e_id = $this->getIdPassed(); |
322 | //debug($id); | 323 | //debug($id); |
323 | 324 | ||
324 | // ACTIONS QUI SONT TOUJOURS AUTORISÉES QUELQUE SOIT LE PROFIL | 325 | // ACTIONS QUI SONT TOUJOURS AUTORISÉES QUELQUE SOIT LE PROFIL |
@@ -340,7 +341,7 @@ class MaterielsController extends AppController { | @@ -340,7 +341,7 @@ class MaterielsController extends AppController { | ||
340 | return $article->user_id === $user['id']; | 341 | return $article->user_id === $user['id']; |
341 | */ | 342 | */ |
342 | 343 | ||
343 | - $id = $this->entity_id; | 344 | + $id = $this->e_id; |
344 | 345 | ||
345 | /* (EP 20200430 déplacé dans isAuthorizedAction()) | 346 | /* (EP 20200430 déplacé dans isAuthorizedAction()) |
346 | // On autorise ou pas l’action demandée : | 347 | // On autorise ou pas l’action demandée : |
@@ -348,9 +349,9 @@ class MaterielsController extends AppController { | @@ -348,9 +349,9 @@ class MaterielsController extends AppController { | ||
348 | // (sauf certaines actions afin de lui donner un comportement proche de ADMIN) | 349 | // (sauf certaines actions afin de lui donner un comportement proche de ADMIN) |
349 | if ($this->USER_IS_SUPERADMIN) { | 350 | if ($this->USER_IS_SUPERADMIN) { |
350 | // edit ou add by copy => ssi CREATED | 351 | // edit ou add by copy => ssi CREATED |
351 | - if ( $this->action =='edit' || ($this->action=='add' && $id>0) ) return $this->isCreated($id); | 352 | + if ( $this->a =='edit' || ($this->a=='add' && $id>0) ) return $this->isCreated($id); |
352 | // archivage => admin only | 353 | // archivage => admin only |
353 | - //if ($this->action == 'statusArchived') return false; | 354 | + //if ($this->a == 'statusArchived') return false; |
354 | // tout le reste => ok | 355 | // tout le reste => ok |
355 | return true; | 356 | return true; |
356 | } | 357 | } |
@@ -360,12 +361,12 @@ class MaterielsController extends AppController { | @@ -360,12 +361,12 @@ class MaterielsController extends AppController { | ||
360 | * //return $this->isAuthorizedAction($this, $user, $role, $action, $id); | 361 | * //return $this->isAuthorizedAction($this, $user, $role, $action, $id); |
361 | * Tout le reste en dessous de cette ligne devient inutile !!! | 362 | * Tout le reste en dessous de cette ligne devient inutile !!! |
362 | */ | 363 | */ |
363 | - $this->myDebug("isAuthorizedAction ? " . $this->isAuthorizedAction2($this, $this->userRole, $this->action, $id, $user)); | 364 | + $this->myDebug("isAuthorizedAction ? " . $this->isAuthorizedAction2($this, $this->userRole, $this->a, $id, $user)); |
364 | return $this->isAuthorizedAction(); | 365 | return $this->isAuthorizedAction(); |
365 | /* | 366 | /* |
366 | return $this->isAuthorizedAction( | 367 | return $this->isAuthorizedAction( |
367 | $this->userRole, | 368 | $this->userRole, |
368 | - $this->action, $id, | 369 | + $this->a, $id, |
369 | $user, | 370 | $user, |
370 | $this->userCname | 371 | $this->userCname |
371 | ); | 372 | ); |
@@ -389,13 +390,13 @@ class MaterielsController extends AppController { | @@ -389,13 +390,13 @@ class MaterielsController extends AppController { | ||
389 | * | 390 | * |
390 | */ | 391 | */ |
391 | private function isAuthorizedAction($action = null) { | 392 | private function isAuthorizedAction($action = null) { |
392 | - if (!$action) $action = $this->action; | 393 | + if (!$action) $action = $this->a; |
393 | //$id = $this->getIdPassed(); | 394 | //$id = $this->getIdPassed(); |
394 | - //debug("action $action, id $this->entity_id"); | 395 | + //debug("action $action, id $this->e_id"); |
395 | //return $this->isAuthorizedActionFor($action, $this->getIdPassed(), $this->userRole, $this->userFromSession, $this->userCname); | 396 | //return $this->isAuthorizedActionFor($action, $this->getIdPassed(), $this->userRole, $this->userFromSession, $this->userCname); |
396 | return $this->isAuthorizedActionFor( | 397 | return $this->isAuthorizedActionFor( |
397 | - $action ? $action : $this->action, | ||
398 | - $this->entity_id, | 398 | + $action ? $action : $this->a, |
399 | + $this->e_id, | ||
399 | $this->userRole, | 400 | $this->userRole, |
400 | $this->userFromSession, $this->userCname | 401 | $this->userFromSession, $this->userCname |
401 | ); | 402 | ); |
@@ -419,7 +420,7 @@ class MaterielsController extends AppController { | @@ -419,7 +420,7 @@ class MaterielsController extends AppController { | ||
419 | 420 | ||
420 | //$this->myDebug("- user is ", $user); | 421 | //$this->myDebug("- user is ", $user); |
421 | 422 | ||
422 | - //debug($this->entity->tititoto()); | 423 | + //debug($this->e->tititoto()); |
423 | // Raccourci pour SUPERADMIN : par défaut il a (presque) TOUS les droits, donc c'est vite vu ! | 424 | // Raccourci pour SUPERADMIN : par défaut il a (presque) TOUS les droits, donc c'est vite vu ! |
424 | // (sauf certaines actions afin de lui donner un comportement proche de ADMIN) | 425 | // (sauf certaines actions afin de lui donner un comportement proche de ADMIN) |
425 | if ($this->USER_IS_SUPERADMIN) { | 426 | if ($this->USER_IS_SUPERADMIN) { |
@@ -443,14 +444,14 @@ class MaterielsController extends AppController { | @@ -443,14 +444,14 @@ class MaterielsController extends AppController { | ||
443 | if ( ($action=='add' && $id>0) || in_array($action,['edit', 'delete', 'statusValidated']) ) { | 444 | if ( ($action=='add' && $id>0) || in_array($action,['edit', 'delete', 'statusValidated']) ) { |
444 | return $this->isCreated($id); | 445 | return $this->isCreated($id); |
445 | } | 446 | } |
446 | - //if ($this->action==’statusValidated’) return $this->isCreated($id); | 447 | + //if ($this->a==’statusValidated’) return $this->isCreated($id); |
447 | if ($action=='statusToBeArchived') return $this->isValidated($id); | 448 | if ($action=='statusToBeArchived') return $this->isValidated($id); |
448 | if ($action=='statusArchived') return $this->isToBeArchived($id); | 449 | if ($action=='statusArchived') return $this->isToBeArchived($id); |
449 | if ($action=='statusCreated') return ! $this->isCreated($id); | 450 | if ($action=='statusCreated') return ! $this->isCreated($id); |
450 | if ($action=='printLabelRuban') return $this->confLabinvent->hasPrinter && $this->isValidated($id); | 451 | if ($action=='printLabelRuban') return $this->confLabinvent->hasPrinter && $this->isValidated($id); |
451 | } | 452 | } |
452 | // archivage => admin only | 453 | // archivage => admin only |
453 | - //if ($this->action == 'statusArchived') return false; | 454 | + //if ($this->a == 'statusArchived') return false; |
454 | // tout le reste => ok | 455 | // tout le reste => ok |
455 | return true; | 456 | return true; |
456 | } | 457 | } |
@@ -498,7 +499,10 @@ class MaterielsController extends AppController { | @@ -498,7 +499,10 @@ class MaterielsController extends AppController { | ||
498 | //$isHis = $this->isHis($id, $user); | 499 | //$isHis = $this->isHis($id, $user); |
499 | //$isHis = $this->isHis($id); | 500 | //$isHis = $this->isHis($id); |
500 | $isHis = $this->belongsToCurrentUser($id); | 501 | $isHis = $this->belongsToCurrentUser($id); |
501 | - return $role=='Utilisateur' ? $isHis : $isHis||$this->isRespGroup($id, $userCname); | 502 | + //return $role=='Utilisateur' ? $isHis : $isHis||$this->isRespGroup($id, $userCname); |
503 | + //return $role=='Utilisateur' ? $isHis : $isHis||$this->isSameGroupAsUser($id, $userCname); | ||
504 | + ///////return $role=='Utilisateur' ? $isHis : $isHis||$this->isSameGroupAsUser($userCname, $id); | ||
505 | + return $role=='Utilisateur' ? $isHis : $isHis||$this->isSameGroupAsCurrentUser($id); | ||
502 | /* | 506 | /* |
503 | if ($role=='Utilisateur') return $isHis; | 507 | if ($role=='Utilisateur') return $isHis; |
504 | // Responsable | 508 | // Responsable |
@@ -634,9 +638,9 @@ class MaterielsController extends AppController { | @@ -634,9 +638,9 @@ class MaterielsController extends AppController { | ||
634 | // if ($action == 'edit') { | 638 | // if ($action == 'edit') { |
635 | case 'edit': | 639 | case 'edit': |
636 | /S | 640 | /S |
637 | - debug("entity is"); debug($this->entity); | 641 | + debug("entity is"); debug($this->e); |
638 | $this->getEntity(); | 642 | $this->getEntity(); |
639 | - debug("entity is"); debug($this->entity); | 643 | + debug("entity is"); debug($this->e); |
640 | S/ | 644 | S/ |
641 | // BETTER: | 645 | // BETTER: |
642 | // $id = (int) $this->request->getAttribute('params')['pass'][0]; | 646 | // $id = (int) $this->request->getAttribute('params')['pass'][0]; |
@@ -752,7 +756,9 @@ class MaterielsController extends AppController { | @@ -752,7 +756,9 @@ class MaterielsController extends AppController { | ||
752 | case 'statusCreated': | 756 | case 'statusCreated': |
753 | if ($this->isCreated($id)) return FALSE; | 757 | if ($this->isCreated($id)) return FALSE; |
754 | if ($this->USER_IS_USER()) return FALSE; | 758 | if ($this->USER_IS_USER()) return FALSE; |
755 | - if ($this->USER_IS_RESP()) return $this->isRespGroup($id, $userCname); | 759 | + //if ($this->USER_IS_RESP()) return $this->isSameGroupAsUser($id, $userCname); |
760 | + /////if ($this->USER_IS_RESP()) return $this->isSameGroupAsUser($userCname, $id); | ||
761 | + if ($this->USER_IS_RESP()) return $this->isSameGroupAsCurrentUser($id); | ||
756 | return true; | 762 | return true; |
757 | 763 | ||
758 | // VALIDATION d'un materiel (passe à VALIDATED) | 764 | // VALIDATION d'un materiel (passe à VALIDATED) |
@@ -760,7 +766,8 @@ class MaterielsController extends AppController { | @@ -760,7 +766,8 @@ class MaterielsController extends AppController { | ||
760 | //$id = (int) $this->request->getAttribute('params')['pass'][0]; | 766 | //$id = (int) $this->request->getAttribute('params')['pass'][0]; |
761 | if (! $this->isCreated($id)) return FALSE; | 767 | if (! $this->isCreated($id)) return FALSE; |
762 | if ($this->USER_IS_USER()) return FALSE; | 768 | if ($this->USER_IS_USER()) return FALSE; |
763 | - if ($this->USER_IS_RESP()) return $this->isRespGroup($id, $userCname); | 769 | + //if ($this->USER_IS_RESP()) return $this->isSameGroupAsUser($userCname, $id); |
770 | + if ($this->USER_IS_RESP()) return $this->isSameGroupAsCurrentUser($id); | ||
764 | return true; | 771 | return true; |
765 | 772 | ||
766 | /* | 773 | /* |
@@ -792,7 +799,8 @@ class MaterielsController extends AppController { | @@ -792,7 +799,8 @@ class MaterielsController extends AppController { | ||
792 | case 'statusToBeArchived': | 799 | case 'statusToBeArchived': |
793 | if (! $this->isValidated($id)) return FALSE; | 800 | if (! $this->isValidated($id)) return FALSE; |
794 | if ($this->USER_IS_USER()) return FALSE; | 801 | if ($this->USER_IS_USER()) return FALSE; |
795 | - if ($this->USER_IS_RESP()) return $this->isRespGroup($id, $userCname); | 802 | + //if ($this->USER_IS_RESP()) return $this->isSameGroupAsUser($userCname, $id); |
803 | + if ($this->USER_IS_RESP()) return $this->isSameGroupAsCurrentUser($id); | ||
796 | return TRUE; | 804 | return TRUE; |
797 | /* | 805 | /* |
798 | if ($this->isValidated($id)) | 806 | if ($this->isValidated($id)) |
@@ -870,11 +878,13 @@ class MaterielsController extends AppController { | @@ -870,11 +878,13 @@ class MaterielsController extends AppController { | ||
870 | * cf https://book.cakephp.org/3.0/fr/tutorials-and-examples/blog-auth-example/auth.html | 878 | * cf https://book.cakephp.org/3.0/fr/tutorials-and-examples/blog-auth-example/auth.html |
871 | */ | 879 | */ |
872 | // True if materiel with id $id is owned by $nomCreateur | 880 | // True if materiel with id $id is owned by $nomCreateur |
873 | - public function isOwnedBy($id, $user_name) | ||
874 | - { | 881 | + //public function isOwnedBy($id, $username) |
882 | + public function belongsToUser($username, $id=null) { | ||
883 | + if (is_null($id)) $id = $this->e_id; | ||
875 | //$entity = $this->getEntity($id); | 884 | //$entity = $this->getEntity($id); |
876 | //return in_array($user_name, [$entity->nom_createur, $entity->nom_responsable]); | 885 | //return in_array($user_name, [$entity->nom_createur, $entity->nom_responsable]); |
877 | - return $this->getEntity($id)->isOwnedOrDeclaredByUser($user_name); | 886 | + //return $this->getEntity($id)->isOwnedOrDeclaredByUser($username); |
887 | + return $this->getEntity($id)->belongsToUser($username); | ||
878 | /* | 888 | /* |
879 | return ($this->Materiels->exists([ | 889 | return ($this->Materiels->exists([ |
880 | 'id' => $id, | 890 | 'id' => $id, |
@@ -887,22 +897,42 @@ class MaterielsController extends AppController { | @@ -887,22 +897,42 @@ class MaterielsController extends AppController { | ||
887 | } | 897 | } |
888 | 898 | ||
889 | // True if materiel with id $id is owned by current user | 899 | // True if materiel with id $id is owned by current user |
900 | + // Par défaut, si $id = null => id du materiel courant | ||
890 | //public function isHis($id, $userFromSession) { | 901 | //public function isHis($id, $userFromSession) { |
891 | //public function isHis($matos_id) { | 902 | //public function isHis($matos_id) { |
892 | - public function belongsToCurrentUser($id) { | 903 | + public function belongsToCurrentUser($id=null) { |
904 | + if (is_null($id)) $id = $this->e_id; | ||
893 | //return ($this->isOwnedBy($id, $userFromSession['sn'][0] . ' ' . $userFromSession['givenname'][0])); | 905 | //return ($this->isOwnedBy($id, $userFromSession['sn'][0] . ' ' . $userFromSession['givenname'][0])); |
894 | - return $this->isOwnedBy($id, $this->current_user_entity->nom); | 906 | + //return $this->isOwnedBy($id, $this->u->nom); |
907 | + return $this->belongsToUser($this->u->nom, $id); | ||
895 | } | 908 | } |
896 | 909 | ||
897 | - | ||
898 | - public function isRespGroup($id, $loginResponsable) | ||
899 | - { | 910 | + // Par défaut, si $id = null => id du materiel courant |
911 | + public function isSameGroupAsCurrentUser($id=null) { | ||
912 | + if (is_null($id)) $id = $this->e_id; | ||
913 | + $u = $this->u; | ||
914 | + return $this->isSameGroupAsUser($u->username, $id); | ||
915 | + } | ||
916 | + | ||
917 | + // Par défaut, si $id = null => id du materiel courant | ||
918 | + //public function isRespGroup($id, $loginResponsable) | ||
919 | + //public function isSameGroupAsUser($id, $loginResponsable) | ||
920 | + public function isSameGroupAsUser($userlogin, $id=null) { | ||
921 | + if (is_null($id)) $id = $this->e_id; | ||
900 | // Get user | 922 | // Get user |
923 | + if ($this->u && $this->u->username == $userlogin) | ||
924 | + $u = $this->u; | ||
925 | + else | ||
926 | + $u = $this->getUserByLogin($userlogin); | ||
927 | + /* | ||
901 | $u = TableRegistry::getTableLocator()->get('Users') | 928 | $u = TableRegistry::getTableLocator()->get('Users') |
902 | ->find() | 929 | ->find() |
903 | - ->where(['username' => $loginResponsable]) | 930 | + ->where(['username' => $userlogin]) |
904 | ->first(); | 931 | ->first(); |
932 | + */ | ||
933 | + return $this->getEntity($id)->isSameGroupAsUser($u->groupes_metier_id, $u->groupes_thematique_id); | ||
905 | 934 | ||
935 | + /* OLD WAY | ||
906 | // Responsable groupe métier ? | 936 | // Responsable groupe métier ? |
907 | $group = 'groupes_metier'; | 937 | $group = 'groupes_metier'; |
908 | $group_fk = $group.'_id'; | 938 | $group_fk = $group.'_id'; |
@@ -914,15 +944,15 @@ class MaterielsController extends AppController { | @@ -914,15 +944,15 @@ class MaterielsController extends AppController { | ||
914 | ->where(['nom =' => 'N/A']) | 944 | ->where(['nom =' => 'N/A']) |
915 | ->first()['id'] | 945 | ->first()['id'] |
916 | ) return $this->getEntity($id)->$group_fk == $u[$group_fk]; | 946 | ) return $this->getEntity($id)->$group_fk == $u[$group_fk]; |
917 | - /* | 947 | + /S |
918 | return $this->Materiels->exists([ | 948 | return $this->Materiels->exists([ |
919 | 'id' => $id, | 949 | 'id' => $id, |
920 | 'groupes_metier_id' => $u['groupes_metier_id'] | 950 | 'groupes_metier_id' => $u['groupes_metier_id'] |
921 | ]); | 951 | ]); |
922 | - */ | 952 | + S/ |
923 | 953 | ||
924 | // Responsable groupe thématique ? | 954 | // Responsable groupe thématique ? |
925 | - $group = 'groupe_thematique'; | 955 | + $group = 'groupes_thematique'; |
926 | $group_fk = $group.'_id'; | 956 | $group_fk = $group.'_id'; |
927 | if ( | 957 | if ( |
928 | $u[$group_fk] !== null | 958 | $u[$group_fk] !== null |
@@ -932,20 +962,23 @@ class MaterielsController extends AppController { | @@ -932,20 +962,23 @@ class MaterielsController extends AppController { | ||
932 | ->where(['nom =' => 'N/A']) | 962 | ->where(['nom =' => 'N/A']) |
933 | ->first()['id'] | 963 | ->first()['id'] |
934 | ) return $this->getEntity($id)->$group_fk == $u[$group_fk]; | 964 | ) return $this->getEntity($id)->$group_fk == $u[$group_fk]; |
935 | - /* | 965 | + /S |
936 | return $this->Materiels->exists([ | 966 | return $this->Materiels->exists([ |
937 | 'id' => $id, | 967 | 'id' => $id, |
938 | 'groupes_thematique_id' => $u['groupe_thematique_id'] | 968 | 'groupes_thematique_id' => $u['groupe_thematique_id'] |
939 | ]); | 969 | ]); |
940 | - */ | 970 | + S/ |
941 | 971 | ||
942 | // sinon, pas responsable de groupe | 972 | // sinon, pas responsable de groupe |
943 | return false; | 973 | return false; |
974 | + */ | ||
944 | 975 | ||
945 | - } // isRespGroup | 976 | + } // isSameGroupAsUser (ex isRespGroup) |
946 | 977 | ||
947 | 978 | ||
948 | - public function hasStatus($id, $status) { | 979 | + // $id = id du materiel => si null alors id du materiel courant |
980 | + public function hasStatus($id=null, $status) { | ||
981 | + if (is_null($id)) $id = $this->e_id; | ||
949 | return $this->getEntity($id)->status == $status; | 982 | return $this->getEntity($id)->status == $status; |
950 | /* | 983 | /* |
951 | return $this->Materiels->exists([ | 984 | return $this->Materiels->exists([ |
@@ -954,10 +987,10 @@ class MaterielsController extends AppController { | @@ -954,10 +987,10 @@ class MaterielsController extends AppController { | ||
954 | ]); | 987 | ]); |
955 | */ | 988 | */ |
956 | } | 989 | } |
957 | - public function isCreated($id) { return $this->hasStatus($id, 'CREATED'); } | ||
958 | - public function isValidated($id) { return $this->hasStatus($id, 'VALIDATED'); } | ||
959 | - public function isToBeArchived($id) { return $this->hasStatus($id, 'TOBEARCHIVED'); } | ||
960 | - public function isArchived($id) { return $this->hasStatus($id, 'ARCHIVED'); } | 990 | + public function isCreated($id=null) { return $this->hasStatus($id, 'CREATED'); } |
991 | + public function isValidated($id=null) { return $this->hasStatus($id, 'VALIDATED'); } | ||
992 | + public function isToBeArchived($id=null) { return $this->hasStatus($id, 'TOBEARCHIVED'); } | ||
993 | + public function isArchived($id=null) { return $this->hasStatus($id, 'ARCHIVED'); } | ||
961 | 994 | ||
962 | 995 | ||
963 | /** | 996 | /** |
@@ -1097,6 +1130,7 @@ class MaterielsController extends AppController { | @@ -1097,6 +1130,7 @@ class MaterielsController extends AppController { | ||
1097 | ]); | 1130 | ]); |
1098 | } // index() | 1131 | } // index() |
1099 | 1132 | ||
1133 | + | ||
1100 | /** | 1134 | /** |
1101 | * View method | 1135 | * View method |
1102 | * | 1136 | * |
@@ -1134,6 +1168,7 @@ class MaterielsController extends AppController { | @@ -1134,6 +1168,7 @@ class MaterielsController extends AppController { | ||
1134 | 'Fournisseurs' | 1168 | 'Fournisseurs' |
1135 | ] | 1169 | ] |
1136 | ]); | 1170 | ]); |
1171 | + $e = $materiel; | ||
1137 | 1172 | ||
1138 | /* | 1173 | /* |
1139 | * (EP) TODO: | 1174 | * (EP) TODO: |
@@ -1151,44 +1186,75 @@ class MaterielsController extends AppController { | @@ -1151,44 +1186,75 @@ class MaterielsController extends AppController { | ||
1151 | * | 1186 | * |
1152 | */ | 1187 | */ |
1153 | 1188 | ||
1189 | + /* | ||
1154 | $IS_CREATED = ($materiel->status == 'CREATED'); | 1190 | $IS_CREATED = ($materiel->status == 'CREATED'); |
1155 | $IS_VALIDATED = ($materiel->status == 'VALIDATED'); | 1191 | $IS_VALIDATED = ($materiel->status == 'VALIDATED'); |
1156 | $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); | 1192 | $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); |
1157 | $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); | 1193 | $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); |
1158 | - | 1194 | + */ |
1195 | + $IS_CREATED = $e->is_created; | ||
1196 | + $IS_VALIDATED = $e->is_validated; | ||
1197 | + $IS_TOBEARCHIVED = $e->is_tobearchived; | ||
1198 | + $IS_ARCHIVED = $e->is_archived; | ||
1199 | + $this->set(compact('IS_CREATED', 'IS_VALIDATED', 'IS_TOBEARCHIVED', 'IS_ARCHIVED')); | ||
1159 | 1200 | ||
1160 | // Current user is creator or owner of current materiel | 1201 | // Current user is creator or owner of current materiel |
1202 | + /* | ||
1161 | $USER_IS_CREATOR_OR_OWNER = in_array($this->userName, [ | 1203 | $USER_IS_CREATOR_OR_OWNER = in_array($this->userName, [ |
1162 | $materiel->nom_createur, | 1204 | $materiel->nom_createur, |
1163 | $materiel->nom_responsable | 1205 | $materiel->nom_responsable |
1164 | ]); | 1206 | ]); |
1207 | + */ | ||
1208 | + //$USER_IS_CREATOR_OR_OWNER = $e->isOwnedOrDeclaredByUser($this->userName); | ||
1209 | + $USER_IS_CREATOR_OR_OWNER = $e->belongsToUser($this->userName); | ||
1165 | $this->set(compact('USER_IS_CREATOR_OR_OWNER')); | 1210 | $this->set(compact('USER_IS_CREATOR_OR_OWNER')); |
1166 | 1211 | ||
1167 | // Current user is same group as current materiel | 1212 | // Current user is same group as current materiel |
1168 | - $USER_IS_SAME_GROUP_AS_MATERIEL = ( | 1213 | + /* |
1214 | + //$USER_IS_SAME_GROUP_AS_MATERIEL = $e->isSameGroupAsUser($user_group_metier_id, $user_group_thematique_id); | ||
1215 | + $USER_IS_SAME_GROUP_AS_MATERIEL = | ||
1216 | + ( | ||
1169 | //( isset($this->priviledgedUser->groupes_metier_id) && $this->priviledgedUser->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->priviledgedUser->groupes_metier_id ) | 1217 | //( isset($this->priviledgedUser->groupes_metier_id) && $this->priviledgedUser->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->priviledgedUser->groupes_metier_id ) |
1170 | - ( isset($this->current_user_entity->groupes_metier_id) && $this->current_user_entity->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->current_user_entity->groupes_metier_id ) | 1218 | + ( isset($this->u->groupes_metier_id) && $this->u->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->u->groupes_metier_id ) |
1171 | || | 1219 | || |
1172 | - ( isset($this->current_user_entity->groupe_thematique_id) && $this->current_user_entity->groupe_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->current_user_entity->groupe_thematique_id ) | 1220 | + ( isset($this->u->groupe_thematique_id) && $this->u->groupe_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->u->groupe_thematique_id ) |
1173 | ); | 1221 | ); |
1222 | + */ | ||
1223 | + //$USER_IS_SAME_GROUP_AS_MATERIEL = $this->currentMaterielIsSameGroupAsCurrentUser(); | ||
1224 | + $USER_IS_SAME_GROUP_AS_MATERIEL = $this->isSameGroupAsCurrentUser(); | ||
1174 | $this->set(compact('USER_IS_SAME_GROUP_AS_MATERIEL')); | 1225 | $this->set(compact('USER_IS_SAME_GROUP_AS_MATERIEL')); |
1175 | 1226 | ||
1176 | $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $this->USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; | 1227 | $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $this->USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; |
1177 | $this->set(compact('USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL')); | 1228 | $this->set(compact('USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL')); |
1178 | 1229 | ||
1179 | $CONTEXT1 = $this->USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL; | 1230 | $CONTEXT1 = $this->USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL; |
1231 | + | ||
1232 | + /* | ||
1180 | $CAN_VALIDATE_OR_INVALIDATE = $this->USER_IS_ADMIN_OR_MORE || ( $materiel->materiel_administratif==0 && $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL ); | 1233 | $CAN_VALIDATE_OR_INVALIDATE = $this->USER_IS_ADMIN_OR_MORE || ( $materiel->materiel_administratif==0 && $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL ); |
1181 | $CAN_VALIDATE = $IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | 1234 | $CAN_VALIDATE = $IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; |
1182 | - | ||
1183 | - $CAN_INVALIDATE = !$IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | ||
1184 | - $CAN_TBA = $IS_VALIDATED && $CONTEXT1; | ||
1185 | - $CAN_ARCHIVE = $IS_TOBEARCHIVED && $this->USER_IS_ADMIN_OR_MORE; | 1235 | + */ |
1236 | + $CAN_VALIDATE = $this->isAuthorizedAction('statusValidated'); | ||
1237 | + //$CAN_INVALIDATE = !$IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | ||
1238 | + $CAN_INVALIDATE = $this->isAuthorizedAction('statusCreated'); | ||
1239 | + //$CAN_TBA = $IS_VALIDATED && $CONTEXT1; | ||
1240 | + $CAN_TBA = $this->isAuthorizedAction('statusTobearchived'); | ||
1241 | + //$CAN_ARCHIVE = $IS_TOBEARCHIVED && $this->USER_IS_ADMIN_OR_MORE; | ||
1242 | + $CAN_ARCHIVE = $this->isAuthorizedAction('statusArchived'); | ||
1186 | $this->set(compact('CAN_VALIDATE', 'CAN_INVALIDATE', 'CAN_TBA', 'CAN_ARCHIVE')); | 1243 | $this->set(compact('CAN_VALIDATE', 'CAN_INVALIDATE', 'CAN_TBA', 'CAN_ARCHIVE')); |
1187 | - | 1244 | + |
1245 | + // TODO: | ||
1246 | + //$CAN_ATTACH_A_DOC = DocumentsController::isAuthorizedAction('add'); | ||
1247 | + // et idem pour tous les autres | ||
1188 | $CAN_ATTACH_A_DOC = $CONTEXT1; | 1248 | $CAN_ATTACH_A_DOC = $CONTEXT1; |
1249 | + | ||
1189 | $CAN_MANAGE_SUIVIS = $CONTEXT1; | 1250 | $CAN_MANAGE_SUIVIS = $CONTEXT1; |
1251 | + $CAN_EDIT_OR_DELETE_SUIVIS = $CAN_MANAGE_SUIVIS; | ||
1252 | + | ||
1190 | $CAN_MANAGE_EMPRUNTS = $CONTEXT1; | 1253 | $CAN_MANAGE_EMPRUNTS = $CONTEXT1; |
1191 | - $CAN_MANAGE_FILES = $CONTEXT1; | 1254 | + $CAN_EDIT_OR_DELETE_EMPRUNTS = $CAN_MANAGE_EMPRUNTS; |
1255 | + | ||
1256 | + $CAN_MANAGE_FILES = $CONTEXT1; // edit, delete, ou envoi devis par mail | ||
1257 | + | ||
1192 | $this->set(compact('CAN_ATTACH_A_DOC', 'CAN_MANAGE_SUIVIS', 'CAN_MANAGE_EMPRUNTS', 'CAN_MANAGE_FILES')); | 1258 | $this->set(compact('CAN_ATTACH_A_DOC', 'CAN_MANAGE_SUIVIS', 'CAN_MANAGE_EMPRUNTS', 'CAN_MANAGE_FILES')); |
1193 | 1259 | ||
1194 | // NEW | 1260 | // NEW |
@@ -1197,8 +1263,9 @@ class MaterielsController extends AppController { | @@ -1197,8 +1263,9 @@ class MaterielsController extends AppController { | ||
1197 | $CAN_EDIT = $this->isAuthorizedAction('edit'); | 1263 | $CAN_EDIT = $this->isAuthorizedAction('edit'); |
1198 | // OLD | 1264 | // OLD |
1199 | //$CAN_EDIT = $IS_CREATED && $CAN_ATTACH_A_DOC; | 1265 | //$CAN_EDIT = $IS_CREATED && $CAN_ATTACH_A_DOC; |
1200 | - $CAN_COPY = $CAN_EDIT; | ||
1201 | - | 1266 | + //$CAN_COPY = $CAN_EDIT; |
1267 | + $CAN_COPY = $this->isAuthorizedAction('add', $id); | ||
1268 | + | ||
1202 | $CAN_DELETE = $this->isAuthorizedAction('delete'); | 1269 | $CAN_DELETE = $this->isAuthorizedAction('delete'); |
1203 | //debug($CAN_DELETE); | 1270 | //debug($CAN_DELETE); |
1204 | 1271 | ||
@@ -1210,7 +1277,7 @@ class MaterielsController extends AppController { | @@ -1210,7 +1277,7 @@ class MaterielsController extends AppController { | ||
1210 | 1277 | ||
1211 | // $status = $this->allStatus[$materiel->status]; | 1278 | // $status = $this->allStatus[$materiel->status]; |
1212 | $status = self::allStatus[$materiel->status]; | 1279 | $status = self::allStatus[$materiel->status]; |
1213 | - $this->set(compact('status', 'IS_CREATED', 'IS_VALIDATED', 'IS_TOBEARCHIVED', 'IS_ARCHIVED')); | 1280 | + $this->set(compact('status')); |
1214 | 1281 | ||
1215 | $sites = TableRegistry::getTableLocator()->get('Sites'); | 1282 | $sites = TableRegistry::getTableLocator()->get('Sites'); |
1216 | //$sites = TableLocator::get('Sites'); | 1283 | //$sites = TableLocator::get('Sites'); |
@@ -1226,16 +1293,17 @@ class MaterielsController extends AppController { | @@ -1226,16 +1293,17 @@ class MaterielsController extends AppController { | ||
1226 | //$fournisseurs = TableLocator::get('Fournisseurs'); | 1293 | //$fournisseurs = TableLocator::get('Fournisseurs'); |
1227 | 1294 | ||
1228 | if ($materiel->photo_id != null) { | 1295 | if ($materiel->photo_id != null) { |
1229 | - $imgMateriel = $materiel->photo_id . '.' . TableRegistry::get('Documents')->get($materiel->photo_id)->get('type_doc'); | 1296 | + $imgMateriel = $materiel->photo_id . '.' . TableRegistry::getTableLocator()->get('Documents')->get($materiel->photo_id)->get('type_doc'); |
1230 | $this->set('imgMateriel', $imgMateriel); | 1297 | $this->set('imgMateriel', $imgMateriel); |
1231 | } | 1298 | } |
1232 | 1299 | ||
1233 | $this->set('PDF_ENGINE', $this->confLabinvent->pdf_engine); | 1300 | $this->set('PDF_ENGINE', $this->confLabinvent->pdf_engine); |
1234 | 1301 | ||
1235 | $entity = $materiel; | 1302 | $entity = $materiel; |
1236 | - $this->set(compact('sites', 'typeDocuments', 'fournisseurs', | ||
1237 | - 'entity' | 1303 | + $this->set(compact('entity')); |
1304 | + $this->set(compact( | ||
1238 | //'materiel', // @deprecated | 1305 | //'materiel', // @deprecated |
1306 | + 'sites', 'typeDocuments', 'fournisseurs' | ||
1239 | )); | 1307 | )); |
1240 | /* (EP) inutile | 1308 | /* (EP) inutile |
1241 | $this->set('_serialize', [ | 1309 | $this->set('_serialize', [ |
src/Controller/QrCodesController.php
@@ -8,7 +8,8 @@ class QrCodesController extends AppController | @@ -8,7 +8,8 @@ class QrCodesController extends AppController | ||
8 | { | 8 | { |
9 | 9 | ||
10 | public function isAuthorized($user) { | 10 | public function isAuthorized($user) { |
11 | - return ($this->action == 'creer'); | 11 | + //return ($this->action == 'creer'); |
12 | + return ($this->a == 'creer'); | ||
12 | // Si aucune règle ci-dessus n'a return true (ou false) | 13 | // Si aucune règle ci-dessus n'a return true (ou false) |
13 | // => DEFAULT PARENT RULE | 14 | // => DEFAULT PARENT RULE |
14 | // (on appelle la méthode isAuthorized() de AppController) | 15 | // (on appelle la méthode isAuthorized() de AppController) |
src/Model/Entity/Materiel.php
@@ -57,8 +57,7 @@ use Cake\ORM\Entity; | @@ -57,8 +57,7 @@ use Cake\ORM\Entity; | ||
57 | * @property \App\Model\Entity\Fournisseur $fournisseur | 57 | * @property \App\Model\Entity\Fournisseur $fournisseur |
58 | * @property bool $metrologie | 58 | * @property bool $metrologie |
59 | */ | 59 | */ |
60 | -class Materiel extends Entity | ||
61 | -{ | 60 | +class Materiel extends Entity { |
62 | 61 | ||
63 | /** | 62 | /** |
64 | * Fields that can be mass assigned using newEntity() or patchEntity(). | 63 | * Fields that can be mass assigned using newEntity() or patchEntity(). |
@@ -90,10 +89,16 @@ class Materiel extends Entity | @@ -90,10 +89,16 @@ class Materiel extends Entity | ||
90 | protected function _getIsTobearchived() { return $this->status == 'TOBEARCHIVED'; } | 89 | protected function _getIsTobearchived() { return $this->status == 'TOBEARCHIVED'; } |
91 | protected function _getIsArchived() { return $this->status == 'ARCHIVED'; } | 90 | protected function _getIsArchived() { return $this->status == 'ARCHIVED'; } |
92 | 91 | ||
92 | + // Ce matériel est utilisé ou déclaré par l'utilisateur $userfullname | ||
93 | + // is Owned Or Declared By User | ||
94 | + // fullname = "Pallier Etienne" | ||
93 | //public function isUsedOrCreatedByUser($user) { | 95 | //public function isUsedOrCreatedByUser($user) { |
94 | - public function isOwnedOrDeclaredByUser($username) { | ||
95 | - return in_array($username, [$this->nom_createur, $this->nom_responsable]); | 96 | + //public function isOwnedOrDeclaredByUser($username) { |
97 | + public function belongsToUser($userfullname) { | ||
98 | + return in_array($userfullname, [$this->nom_createur, $this->nom_responsable]); | ||
96 | } | 99 | } |
100 | + | ||
101 | + // Ce matériel a le même groupe que l'un de ceux de l'utilisateur courant | ||
97 | public function isSameGroupAsUser($user_group_metier_id, $user_group_thematique_id) { | 102 | public function isSameGroupAsUser($user_group_metier_id, $user_group_thematique_id) { |
98 | // Responsable groupe métier ? | 103 | // Responsable groupe métier ? |
99 | //if ($this->groupes_metier_id==null && $this->groupes_thematique_id==null) return false; | 104 | //if ($this->groupes_metier_id==null && $this->groupes_thematique_id==null) return false; |
src/Model/Table/MaterielsTable.php
@@ -467,7 +467,7 @@ class MaterielsTable extends AppTable | @@ -467,7 +467,7 @@ class MaterielsTable extends AppTable | ||
467 | * | 467 | * |
468 | * On récupère le NOM du fournisseur saisi dans le champ appelé fournisseur.name (en php) | 468 | * On récupère le NOM du fournisseur saisi dans le champ appelé fournisseur.name (en php) |
469 | * En Html ça correspond à fournisseur['name'] | 469 | * En Html ça correspond à fournisseur['name'] |
470 | - * Si saisie vide => mettre à nul | 470 | + * Si saisie vide => mettre à null |
471 | * Sinon, chercher le fournisseur_id correspondant à ce nom | 471 | * Sinon, chercher le fournisseur_id correspondant à ce nom |
472 | * Si id trouvé => fournisseur_id = cet id | 472 | * Si id trouvé => fournisseur_id = cet id |
473 | * Sinon, créer un nouveau fournisseur avec ce nom | 473 | * Sinon, créer un nouveau fournisseur avec ce nom |
src/Template/Materiels/view.ctp
@@ -672,7 +672,8 @@ if ($role == 'Super Administrateur') { | @@ -672,7 +672,8 @@ if ($role == 'Super Administrateur') { | ||
672 | || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)) { | 672 | || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)) { |
673 | */ | 673 | */ |
674 | if ($CAN_MANAGE_SUIVIS) { | 674 | if ($CAN_MANAGE_SUIVIS) { |
675 | - // Edit Suivis | 675 | + |
676 | + // - Edit Suivis | ||
676 | $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Suivis', 'edit', $suivi->id); | 677 | $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Suivis', 'edit', $suivi->id); |
677 | /* | 678 | /* |
678 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ | 679 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ |
@@ -684,7 +685,8 @@ if ($role == 'Super Administrateur') { | @@ -684,7 +685,8 @@ if ($role == 'Super Administrateur') { | ||
684 | 'style' => 'margin:0' | 685 | 'style' => 'margin:0' |
685 | ]); | 686 | ]); |
686 | */ | 687 | */ |
687 | - // Delete Suivis | 688 | + |
689 | + // - Delete Suivis | ||
688 | //$echoActionButton($this->Html, 'icon-trash', $bStyle, '', 'Suivis', 'delete', $suivi->id, [], "", ""); | 690 | //$echoActionButton($this->Html, 'icon-trash', $bStyle, '', 'Suivis', 'delete', $suivi->id, [], "", ""); |
689 | echo ' '.$this->Form->postLink(__('<i class="icon-trash"></i>'), [ | 691 | echo ' '.$this->Form->postLink(__('<i class="icon-trash"></i>'), [ |
690 | 'controller' => 'Suivis', | 692 | 'controller' => 'Suivis', |
@@ -695,6 +697,7 @@ if ($role == 'Super Administrateur') { | @@ -695,6 +697,7 @@ if ($role == 'Super Administrateur') { | ||
695 | 'style' => 'margin:0', | 697 | 'style' => 'margin:0', |
696 | 'confirm' => __('Êtes-vous sur de vouloir annuler ce suivi #{0} ?', $suivi->id) | 698 | 'confirm' => __('Êtes-vous sur de vouloir annuler ce suivi #{0} ?', $suivi->id) |
697 | ]); | 699 | ]); |
700 | + | ||
698 | } | 701 | } |
699 | ?> | 702 | ?> |
700 | </td> | 703 | </td> |
@@ -800,7 +803,8 @@ if ($role == 'Super Administrateur') { | @@ -800,7 +803,8 @@ if ($role == 'Super Administrateur') { | ||
800 | $bEdit = $bDelete = ''; | 803 | $bEdit = $bDelete = ''; |
801 | //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER ) { | 804 | //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER ) { |
802 | if ($CAN_MANAGE_EMPRUNTS) { | 805 | if ($CAN_MANAGE_EMPRUNTS) { |
803 | - // Edit Emprunt | 806 | + |
807 | + // - Edit Emprunt | ||
804 | $bEdit = $this->MyButton->getActionButton('icon-pencil', $bStyle, '', 'Emprunts', 'edit', $emprunt->id); | 808 | $bEdit = $this->MyButton->getActionButton('icon-pencil', $bStyle, '', 'Emprunts', 'edit', $emprunt->id); |
805 | //$bEdit = $getActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Emprunts', 'edit', $emprunt->id); | 809 | //$bEdit = $getActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Emprunts', 'edit', $emprunt->id); |
806 | //echo $bEdit; | 810 | //echo $bEdit; |
@@ -814,7 +818,8 @@ if ($role == 'Super Administrateur') { | @@ -814,7 +818,8 @@ if ($role == 'Super Administrateur') { | ||
814 | 'style' => 'margin:0' | 818 | 'style' => 'margin:0' |
815 | ]); | 819 | ]); |
816 | */ | 820 | */ |
817 | - // Delete Emprunt | 821 | + |
822 | + // - Delete Emprunt | ||
818 | $bDelete = $this->Form->postLink(__('<i class="icon-trash"></i>'), [ | 823 | $bDelete = $this->Form->postLink(__('<i class="icon-trash"></i>'), [ |
819 | 'controller' => 'Emprunts', | 824 | 'controller' => 'Emprunts', |
820 | 'action' => 'delete', | 825 | 'action' => 'delete', |
@@ -826,6 +831,7 @@ if ($role == 'Super Administrateur') { | @@ -826,6 +831,7 @@ if ($role == 'Super Administrateur') { | ||
826 | 'confirm' => __('Êtes-vous sur de vouloir annuler cet emprunt #{0}?', $emprunt->id) | 831 | 'confirm' => __('Êtes-vous sur de vouloir annuler cet emprunt #{0}?', $emprunt->id) |
827 | ] | 832 | ] |
828 | ); | 833 | ); |
834 | + | ||
829 | } | 835 | } |
830 | // champ virtuel (calculé) statut | 836 | // champ virtuel (calculé) statut |
831 | $style_red = 'style="color: red"'; | 837 | $style_red = 'style="color: red"'; |
@@ -930,9 +936,10 @@ if ($role == 'Super Administrateur') { | @@ -930,9 +936,10 @@ if ($role == 'Super Administrateur') { | ||
930 | ]); | 936 | ]); |
931 | } | 937 | } |
932 | 938 | ||
933 | - // 2 - icone EDIT | ||
934 | //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) { | 939 | //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) { |
935 | if ($CAN_MANAGE_FILES) { | 940 | if ($CAN_MANAGE_FILES) { |
941 | + | ||
942 | + // 2 - icone EDIT | ||
936 | $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Documents', 'edit', $document->id); | 943 | $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Documents', 'edit', $document->id); |
937 | /* | 944 | /* |
938 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ | 945 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ |
src/Template/Suivis/view.ctp
@@ -10,7 +10,7 @@ $role = $role; | @@ -10,7 +10,7 @@ $role = $role; | ||
10 | $priviledgedUser = $priviledgedUser; | 10 | $priviledgedUser = $priviledgedUser; |
11 | // functions | 11 | // functions |
12 | $printTableRow = $printTableRow; | 12 | $printTableRow = $printTableRow; |
13 | -debug($suivi); | 13 | +//debug($suivi); |
14 | /* | 14 | /* |
15 | debug($suivi->nom_createur); | 15 | debug($suivi->nom_createur); |
16 | debug($username); | 16 | debug($username); |