From c0c241ca4ec7c16a5e8213260b7b0075b833b6d5 Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 5 Jun 2020 18:22:03 +0200 Subject: [PATCH] Bugfixes et mise à jour vue index (matériels) (v3.7.9.33) --- README.md | 13 +++++++++++-- src/Controller/AppController.php | 36 +++++++++++++++++++++++------------- src/Controller/DocumentsController.php | 8 ++++---- src/Controller/GroupesThematiquesController.php | 2 +- src/Controller/MaterielsController.php | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- src/Controller/SuivisController.php | 10 +++++----- src/Controller/UsersController.php | 2 +- src/Model/Entity/Materiel.php | 7 ++++--- src/Model/Entity/User.php | 4 ++-- src/Model/Table/GroupesThematiquesTable.php | 2 +- src/Model/Table/LdapConnectionsTable.php | 4 ++-- src/Model/Table/SurCategoriesTable.php | 2 +- src/Model/Table/UsersTable.php | 4 ++-- src/Template/Element/menu_view.ctp | 24 ++++++++++++------------ src/Template/Emprunts/find.ctp | 2 +- src/Template/Materiels/add_edit.ctp | 6 +++--- src/Template/Materiels/find.ctp | 6 +++--- src/Template/Materiels/index.ctp | 28 ++++++++++++++++++++++++---- src/Template/Materiels/view.ctp | 2 +- src/Template/Pages/home_app.ctp | 4 ++-- src/Template/Suivis/find.ctp | 2 +- src/Template/Suivis/index.ctp | 2 +- src/Template/Suivis/view.ctp | 8 ++++---- src/Template/Users/add.ctp | 2 +- src/Template/Users/edit.ctp | 2 +- tests/Fixture/MaterielsFixture.php | 1 + tests/Fixture/UsersFixture.php | 16 ++++++++-------- tests/TestCase/Controller/UsersControllerTest.php | 2 +- 28 files changed, 176 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index c617bee..4a0c303 100644 --- a/README.md +++ b/README.md @@ -54,12 +54,16 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE Date: 05/06/2020 -Version: 3.7.9.32 +Version: 3.7.9.33 Author: EP Commentaire: - - AUTORISATIONS DESORMAIS ADAPTABLES POUR CHAQUE LABO + - bugfix : renommé groupe_thematique_id en groupes_thematique_id pour etre harmonisé partout et surtout avec "groupes_metier_id" !!! + - bugfix : isSameGroup + - tous les tests actuels ok + - AUTORISATIONS DESORMAIS ADAPTABLES POUR CHAQUE LABO => pris en compte (testé) aussi dans les tests avec setAuthorizations_TEST() => chaque labo peut désormais adapter les autorisations des utilisateurs à sa sauce !!! => on part des règles générales par défaut, puis on adapte si besoin, cool non ? + - Vues view (déjà fait avant) et index : les boutons d'action (éditer, valider, supprimer...) s'affichent désormais en fonction des autorisations centralisées - ajout de 2 très gros tests génériques pour les actions et les vues matos/index et matos/view en cours... (ce qui m'évitera plein de tests à la main) @@ -110,6 +114,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi ----------------------------------------------------------------------------------------------------------- +05/06/2020 v3.7.9.32 (EP) + - AUTORISATIONS DESORMAIS ADAPTABLES POUR CHAQUE LABO + => chaque labo peut désormais adapter les autorisations des utilisateurs à sa sauce !!! + => on part des règles générales par défaut, puis on adapte si besoin, cool non ? + 04/06/2020 v3.7.9.31 (EP) - MISE À JOUR DE TOUS LES CONTROLEURS pour le nouveau système d'autorisation - SIMPLIFICATION DES AUTORISATIONS POUR LA PLUPART DES CONTROLEURS SIMPLES diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index d8e4ee9..8ba0a2e 100755 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -362,7 +362,8 @@ class AppController extends Controller // (raccourci) Reference vers le tableau $action_rules = &$this->is_authorized_action[$action]; - $S = $action == 'statusTobearchived'; + //$S = $action == 'edit'; + //$S = $action == 'statusTobearchived'; //$S = $this->name == 'Suivis'; $S = false; @@ -390,11 +391,14 @@ class AppController extends Controller if ($$role_var !== null) $action_rules[$role] = $$role_var; } */ + + // 2) Intialisation de la règle pour chaque profil //debug("user value is"); debug($user); //$roles_var = [$user, $resp, $admin, $adminp, $super]; //foreach ($roles_var as $role_var) if ($$role_var) $action_rules[$role] = $$role_var; foreach ($roles_short as $role_short) { $role_cond = &$authorizations[$role_short]; + //if ($S) { debug("condition for role $role_short"); debug($role_cond); } if (isset($role_cond) && $role_cond!==null) $action_rules[$role_short] = $role_cond; } if ($S) { @@ -402,7 +406,7 @@ class AppController extends Controller debug("action_rules:"); debug($action_rules); } - // 2) Des-aliasing de chaque règle + // 3) Des-aliasing de chaque règle // - règle générale (par défaut) /* ENORME BUG PHP : in_array(0,['add','edit'])) => renvoie TRUE !!! @@ -426,7 +430,7 @@ class AppController extends Controller //debug("RULE is"); debug($rule); // règle = 'default' if ($rule === 0) continue; // car sinon, bug php, in_array répond toujours TRUE !!! - elseif ($rule == 'default') $rule = $action_rules['default']; + elseif ($rule === 'default') $rule = $action_rules['default']; // règle = un autre role elseif (in_array($rule,$roles_short)) { //debug("$rule in roles"); @@ -434,7 +438,7 @@ class AppController extends Controller } // règle = une autre action (= 'add' ou 'edit') elseif (in_array($rule,['add','edit'])) $rule = $this->is_authorized_action[$rule][$role]; - elseif (is_array($rule) && $rule[0]=='default') $rule[0] = $action_rules['default'][0]; + elseif (is_array($rule) && $rule[0]==='default') $rule[0] = $action_rules['default'][0]; //if ($role=='user') debug("RULE is"); debug($rule); //debug("action_rules:"); debug($action_rules); @@ -488,7 +492,8 @@ class AppController extends Controller // php7: //protected function isAuthorizedAction(string $action, int $id=null, bool $IS_RELATED_ENTITY_ID=false, $user=null) { // php5: - protected function isAuthorizedAction($action, $id=null, $IS_RELATED_ENTITY_ID=false, $user=null) { + //protected function isAuthorizedAction($action, $id=null, $IS_RELATED_ENTITY_ID=false, $user=null) { + public function isAuthorizedAction($action, $id=null, $IS_RELATED_ENTITY_ID=false, $user=null) { //return $this->isAuthorizedActionForRole($this->user_role, $action, $id); return $this->isAuthorizedActionForRole($this->getUserRole($user), $action, $id, $IS_RELATED_ENTITY_ID, $user); } @@ -544,7 +549,9 @@ class AppController extends Controller // Pour cette action et ce role : //debug("role is $role"); $access_condition = $this->is_authorized_action[$action][$role]; - //debug($access_condition); + //debug($this->is_authorized_action); + //debug($this->is_authorized_action[$action]); + //debug("access_condition"); debug($access_condition); //debug($this->is_authorized_action); // Si la condition est un alias vers une autre entrée (style 'default' ou 'admin'...), on remplace cet alias par sa valeur //if ( in_array($access_condition, ['default', 'user', 'resp', 'admin']) ) @@ -567,7 +574,7 @@ class AppController extends Controller //if ($action=='statusTobearchived') exit; /* - * 1) Condition de Statut + * a) Condition de Statut * * Peut prendre diverses formes : * - soit un zéro pour dire OK (pas de condition) : '0' @@ -575,7 +582,7 @@ class AppController extends Controller * - soit un NON statut : 'NOT ARCHIVED' * - peut aussi être composé de 2 conditions séparées par un '&&' (ET) ou un '||' (OU) */ - $this->d("- a) condition statut ?"); + $this->d("- a) condition statut :"); $this->d($condition_on_status); $m = null; // 0 => pas de condition, c'est ok ! //if ($condition === 0) return TRUE; @@ -637,8 +644,9 @@ class AppController extends Controller } */ - // 2) Condition d'Appartenance (belonging) - $this->d("- b) condition appartenance ?"); + // b) Condition d'Appartenance (belonging) + $this->d("- b) condition appartenance :"); $this->d($condition_on_belonging); + if (! in_array($condition_on_belonging, [-1,0,1])) throw new \Exception("La condition d'appartenance doit être 0 (pas de condition) ou 1 (doit appartenir) !"); // 0 => pas de condition, c'est ok ! if ($condition_on_belonging === -1) $condition_on_belonging_result = FALSE; @@ -650,8 +658,10 @@ class AppController extends Controller //debug("********* USER2 IS:"); debug($u); //exit; //$m = $m?:$this->getRelatedMaterielForId($id, $action); + //debug($m); $m = $m?:$this->getRelatedMaterielForId($id, $IS_RELATED_ENTITY_ID); //debug($m); + //debug($m); //$m = $m ? $m : $this->getRelatedMaterielForId($id); /* if (!$m) { @@ -660,7 +670,7 @@ class AppController extends Controller */ $condition_on_belonging_result = $m->belongsToUser($u->nom); // Si l'utilisateur courant a le profil "Responsable", il peut aussi faire cette action s'il est responsable du matériel $m - if ($this->USER_IS_RESP()) $condition_on_belonging_result = $condition_on_belonging_result || $m->isSameGroupAsUser($u->group_metier_id, $u->group_thematique_id); + if ($this->USER_IS_RESP()) $condition_on_belonging_result = $condition_on_belonging_result || $m->isSameGroupAsUser($u->groupes_metier_id, $u->groupes_thematique_id); } $this->d("$condition_on_belonging evalué à "); $this->d2($condition_on_belonging_result); //if ($this->name=='Emprunts') exit; @@ -2316,7 +2326,7 @@ class AppController extends Controller ->select('email') ->where([ 'role =' => 'Responsable', - 'groupe_thematique_id =' => $materiel->groupes_thematique_id + 'groupes_thematique_id =' => $materiel->groupes_thematique_id ]) ->toArray(); } @@ -2631,7 +2641,7 @@ class AppController extends Controller ->select('email') ->where([ 'role =' => 'Responsable', - 'groupe_thematique_id =' => $materiel->groupes_thematique_id + 'groupes_thematique_id =' => $materiel->groupes_thematique_id ]) ->toArray(); } diff --git a/src/Controller/DocumentsController.php b/src/Controller/DocumentsController.php index 9c89300..c70b5e0 100755 --- a/src/Controller/DocumentsController.php +++ b/src/Controller/DocumentsController.php @@ -159,14 +159,14 @@ class DocumentsController extends AppController 'id' => $id, 'groupes_metier_id' => $u['groupes_metier_id'] ])); - } else if ($u['groupe_thematique_id'] !== null && $u['groupe_thematique_id'] != TableRegistry::get('GroupesThematiques')->find() + } else if ($u['groupes_thematique_id'] !== null && $u['groupes_thematique_id'] != TableRegistry::get('GroupesThematiques')->find() ->where([ 'nom =' => 'N/A' ]) ->first()['id']) { return ($suiviTable->exists([ 'id' => $id, - 'groupes_thematique_id' => $u['groupe_thematique_id'] + 'groupes_thematique_id' => $u['groupes_thematique_id'] ])); } else { return false; @@ -190,14 +190,14 @@ class DocumentsController extends AppController 'id' => $id, 'groupes_metier_id' => $u['groupes_metier_id'] ])); - } else if ($u['groupe_thematique_id'] !== null && $u['groupe_thematique_id'] != TableRegistry::get('GroupesThematiques')->find() + } else if ($u['groupes_thematique_id'] !== null && $u['groupes_thematique_id'] != TableRegistry::get('GroupesThematiques')->find() ->where([ 'nom =' => 'N/A' ]) ->first()['id']) { return ($materielTable->exists([ 'id' => $id, - 'groupes_thematique_id' => $u['groupe_thematique_id'] + 'groupes_thematique_id' => $u['groupes_thematique_id'] ])); } else { return false; diff --git a/src/Controller/GroupesThematiquesController.php b/src/Controller/GroupesThematiquesController.php index 2ac1ec2..c15ed57 100755 --- a/src/Controller/GroupesThematiquesController.php +++ b/src/Controller/GroupesThematiquesController.php @@ -92,7 +92,7 @@ class GroupesThematiquesController extends AppController $this->set('materiels', $materiels); $utilisateurs = TableRegistry::get('Users')->find('all')->where([ - 'groupe_thematique_id =' => $id + 'groupes_thematique_id =' => $id ]); $this->set('utilisateurs', $utilisateurs); diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index c8c9732..8ba8c28 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -252,7 +252,7 @@ class MaterielsController extends AppController { /* - * Méthode de définition des autorisations SPÉCIFIQUE au laboratoire IRAP + * Méthode de définition des autorisations SPÉCIFIQUES au laboratoire IRAP * * Cette méthode surcharge la méthode générale "setAuthorizations()" ci-après. * Elle doit donc d'abord appeler la méthode générale (voir étape 1) puis surcharger ou ajouter quelques règles (voir étape 2) @@ -281,12 +281,16 @@ class MaterielsController extends AppController { // - Adaptation de la règle pour "edit" (modif d'un matériel) $this->setAuthorizationsForAction('edit', ['CREATED',0], [ 'user' => ['CREATED',1], - 'resp' => ['CREATED',1], + //'user' => [0,1], + //'user' => 0, + 'resp' => 'user', + //'resp' => ['CREATED',1], + //'resp' => -1 //$admin = 'default', //$super = 'default' // + champs techniques ]); } - // Méthode de définition des autorisations SPÉCIFIQUE au laboratoire CRAL + // Méthode de définition des autorisations SPÉCIFIQUES au laboratoire CRAL protected function setAuthorizations_CRAL() { $this->d("SPECIFIC CRAL!"); @@ -296,9 +300,9 @@ class MaterielsController extends AppController { // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul // Voir pour exemple la méthode setAuthorizations_IRAP() ci-dessus. } - // Méthode de définition des autorisations SPÉCIFIQUE au laboratoire LATMOS + // Méthode de définition des autorisations SPÉCIFIQUES au laboratoire LATMOS protected function setAuthorizations_LATMOS() { - $this->d("SPECIFIC CRAL!"); + $this->d("SPECIFIC LATMOS !"); // 1) On appelle d'abord la méthode générale $this->setAuthorizations(); @@ -308,7 +312,7 @@ class MaterielsController extends AppController { } // Méthode de définition des autorisations SPÉCIFIQUE au laboratoire IAS protected function setAuthorizations_IAS() { - $this->d("SPECIFIC CRAL!"); + $this->d("SPECIFIC IAS !"); // 1) On appelle d'abord la méthode générale $this->setAuthorizations(); @@ -316,7 +320,32 @@ class MaterielsController extends AppController { // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul // Voir pour exemple la méthode setAuthorizations_IRAP() ci-dessus. } - + /* + * ATTENTION ! NE PAS SUPPRIMER ! + * + * Cette méthode est utilisée pour les tests + * + * Elle permet de vérifier que les autorisations "spécifiques" d'un labo sont prises en compte + * + * Méthode de définition des autorisations SPÉCIFIQUES au laboratoire nommé "TEST" + * + */ + protected function setAuthorizations_TEST() { + $this->d("SPECIFIC LABO 'TEST' !"); + + // 1) On appelle d'abord la méthode générale + $this->setAuthorizations(); + + // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul + // - Adaptation de la règle pour "edit" (modif d'un matériel) + $this->setAuthorizationsForAction('edit', ['CREATED',0], [ + 'user' => ['CREATED',1], + 'resp' => 'user', + //'resp' => ['CREATED',1], + //'resp' => 0, + //'resp' => -1, + ]); + } // TEST only /* * @Override @@ -361,15 +390,18 @@ class MaterielsController extends AppController { // Action 'edit' (modif d'un matériel) $this->setAuthorizationsForAction('edit', ['CREATED',0], [ 'user' => ['CREATED',1], - 'resp' => ['CREATED',1], + 'resp' => 'user', + //'resp' => -1, + //'resp' => 0, + //'resp' => ['CREATED',1], //$admin = 'default', //$super = 'default' // + champs techniques ]); // Action 'delete' (suppression d'un matériel) $this->setAuthorizationsForAction('delete', ['CREATED',1]); - - // Action 'devalidate' (repasser le matériel au statut 'CREATED', c'est à dire le dé-valider ou l'invalider) + + // Action 'devalidate' ou 'invalidate' (repasser le matériel au statut 'CREATED', c'est à dire le dé-valider ou l'invalider) // (VALIDATED ou TBA ou ARCHIVED) => CREATED //$this->setAuthorizationsForAction('devalidate', $this->setAuthorizationsForAction('statusCreated', ['NOT CREATED',0], [ @@ -409,7 +441,8 @@ class MaterielsController extends AppController { // Action 'printLabelRuban' (impression d'une étiquette) $this->setAuthorizationsForAction('printLabelRuban', ['VALIDATED && conf.hasPrinter',0] ); // Action 'execActions' - $this->setAuthorizationsForAction('execActions', 0, [ // autorisé sans condition + $this->setAuthorizationsForAction('execActions', 0, [ // par défaut autorisé sans condition + // sauf pour user et resp 'user' => -1, // PAS AUTORISÉ 'resp' => -1 // PAS AUTORISÉ ]); @@ -955,7 +988,7 @@ class MaterielsController extends AppController { $USER_IS_SAME_GROUP_AS_MATERIEL = ( ( isset($this->priviledgedUser->groupes_metier_id) && $this->priviledgedUser->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->priviledgedUser->groupes_metier_id ) || - ( isset($this->priviledgedUser->groupe_thematique_id) && $this->priviledgedUser->groupe_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->priviledgedUser->groupe_thematique_id ) + ( isset($this->priviledgedUser->groupes_thematique_id) && $this->priviledgedUser->groupes_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->priviledgedUser->groupes_thematique_id ) ); $CAN_EDIT = $IS_CREATED && ( $this->USER_IS_ADMIN_OR_MORE @@ -1247,7 +1280,7 @@ class MaterielsController extends AppController { /S return $this->Materiels->exists([ 'id' => $id, - 'groupes_thematique_id' => $u['groupe_thematique_id'] + 'groupes_thematique_id' => $u['groupes_thematique_id'] ]); S/ @@ -1407,9 +1440,17 @@ class MaterielsController extends AppController { ]) ->count()); $this->set(compact('materiels')); + + // Pas bien..., mais pratique : + // on passe le controleur de materiels à la vue index pour qu'elle + // puisse appeler la methode isAuthorizedAction() + $this->set("controller", $this); + + /* (EP) inutile $this->set('_serialize', [ 'materiels' ]); + */ } // index() //@Override @@ -1586,7 +1627,7 @@ class MaterielsController extends AppController { //( isset($this->priviledgedUser->groupes_metier_id) && $this->priviledgedUser->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->priviledgedUser->groupes_metier_id ) ( isset($this->u->groupes_metier_id) && $this->u->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->u->groupes_metier_id ) || - ( isset($this->u->groupe_thematique_id) && $this->u->groupe_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->u->groupe_thematique_id ) + ( isset($this->u->groupes_thematique_id) && $this->u->groupes_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->u->groupes_thematique_id ) ); */ //$USER_IS_SAME_GROUP_AS_MATERIEL = $this->currentMaterielIsSameGroupAsCurrentUser(); diff --git a/src/Controller/SuivisController.php b/src/Controller/SuivisController.php index 53d4505..0d3116e 100755 --- a/src/Controller/SuivisController.php +++ b/src/Controller/SuivisController.php @@ -207,14 +207,14 @@ class SuivisController extends AppController 'id' => $id, 'groupes_metier_id' => $u['groupes_metier_id'] ])); - } else if ($u['groupe_thematique_id'] !== null && $u['groupe_thematique_id'] != TableRegistry::getTableLocator()->get('GroupesThematiques')->find() + } else if ($u['groupes_thematique_id'] !== null && $u['groupes_thematique_id'] != TableRegistry::getTableLocator()->get('GroupesThematiques')->find() ->where([ 'nom =' => 'N/A' ]) ->first()['id']) { return ($this->Suivis->exists([ 'id' => $id, - 'groupes_thematique_id' => $u['groupe_thematique_id'] + 'groupes_thematique_id' => $u['groupes_thematique_id'] ])); } else { return false; @@ -338,9 +338,9 @@ class SuivisController extends AppController ) || ( - isset($this->priviledgedUser->groupe_thematique_id) - && $this->priviledgedUser->groupe_thematique_id != $idGtNa - && $suivi->groupes_thematique_id == $this->priviledgedUser->groupe_thematique_id + isset($this->priviledgedUser->groupes_thematique_id) + && $this->priviledgedUser->groupes_thematique_id != $idGtNa + && $suivi->groupes_thematique_id == $this->priviledgedUser->groupes_thematique_id ) ) ) diff --git a/src/Controller/UsersController.php b/src/Controller/UsersController.php index dbde2ea..4684ac0 100755 --- a/src/Controller/UsersController.php +++ b/src/Controller/UsersController.php @@ -344,7 +344,7 @@ class UsersController extends AppController 'email' => 'Pierre.Devoto@irap.omp.eu', 'role' => 'Responsable', 'groupes_metier_id' => '2', - 'groupe_thematique_id' => '1', + 'groupes_thematique_id' => '1', 'sur_categorie_id' => '1' */ $user = $this->Users->patchEntity($user, $this->request->getData()); diff --git a/src/Model/Entity/Materiel.php b/src/Model/Entity/Materiel.php index 31ab131..1e86c3c 100755 --- a/src/Model/Entity/Materiel.php +++ b/src/Model/Entity/Materiel.php @@ -107,8 +107,9 @@ class Materiel extends Entity { //public function isUsedOrCreatedByUser($user) { //public function isOwnedOrDeclaredByUser($username) { public function belongsToUser($userfullname) { + //debug("userfullname is $userfullname"); $res = in_array($userfullname, [$this->nom_createur, $this->nom_responsable]); - $this->d("$userfullname in [ $this->nom_createur, $this->nom_responsable ] ? ".(int)$res); + //$this->d("$userfullname in [ $this->nom_createur, $this->nom_responsable ] ? ".(int)$res); return $res; } @@ -150,9 +151,9 @@ class Materiel extends Entity { if ($this->belongsToUser($u->nom)) return true; //if ($u->ownsMatos($this)) return true; // c) - $res = $u->is_resp && $this->isSameGroupAsUser($u->groupes_metier_id, $u->groupe_thematique_id); + $res = $u->is_resp && $this->isSameGroupAsUser($u->groupes_metier_id, $u->groupes_thematique_id); return $res; - //return $u->is_resp && $this->isSameGroupAsUser($u->groupes_metier_id, $u->groupe_thematique_id); + //return $u->is_resp && $this->isSameGroupAsUser($u->groupes_metier_id, $u->groupes_thematique_id); //return $this->isSameGroupAsMatos($m); } diff --git a/src/Model/Entity/User.php b/src/Model/Entity/User.php index 7cf9983..235f839 100755 --- a/src/Model/Entity/User.php +++ b/src/Model/Entity/User.php @@ -16,10 +16,10 @@ use Cake\Auth\DefaultPasswordHasher; * @property string $email * @property string $role * @property int $groupes_metier_id - * @property int $groupe_thematique_id + * @property int $groupes_thematique_id * @property int $sur_categorie_id * @property int $groupes_metier_id2 - * @property int $groupe_thematique_id2 + * @property int $groupes_thematique_id2 * @property int $sur_categorie_id2 * @property \App\Model\Entity\GroupesMetier $groupes_metier * @property \App\Model\Entity\GroupesThematique $groupe_thematique diff --git a/src/Model/Table/GroupesThematiquesTable.php b/src/Model/Table/GroupesThematiquesTable.php index e856c44..c40b8a4 100755 --- a/src/Model/Table/GroupesThematiquesTable.php +++ b/src/Model/Table/GroupesThematiquesTable.php @@ -35,7 +35,7 @@ class GroupesThematiquesTable extends AppTable 'foreignKey' => 'groupes_thematique_id' ]); $this->hasMany('Users', [ - 'foreignKey' => 'groupe_thematique_id' + 'foreignKey' => 'groupes_thematique_id' ]); } diff --git a/src/Model/Table/LdapConnectionsTable.php b/src/Model/Table/LdapConnectionsTable.php index f76e6d7..5f18b43 100755 --- a/src/Model/Table/LdapConnectionsTable.php +++ b/src/Model/Table/LdapConnectionsTable.php @@ -107,7 +107,7 @@ class LdapConnectionsTable extends AppTable 'role' => 'Super Administrateur', 'groupes_metier_id' => (int) 3, 'password' => 'pass crypté...', - 'groupe_thematique_id' => null, + 'groupes_thematique_id' => null, 'sur_categorie_id' => null, // - Champs ajoutés par CakePhp3: @@ -231,7 +231,7 @@ class LdapConnectionsTable extends AppTable 'role' => 'Super Administrateur', 'groupes_metier_id' => (int) 3, 'password' => 'pass crypté...', - 'groupe_thematique_id' => null, + 'groupes_thematique_id' => null, 'sur_categorie_id' => null, // - Champs ajoutés par CakePhp3: diff --git a/src/Model/Table/SurCategoriesTable.php b/src/Model/Table/SurCategoriesTable.php index f6f5e42..1ff5613 100755 --- a/src/Model/Table/SurCategoriesTable.php +++ b/src/Model/Table/SurCategoriesTable.php @@ -29,7 +29,7 @@ class SurCategoriesTable extends AppTable $this->setPrimaryKey('id'); $this->hasMany('Users', [ - 'foreignKey' => 'groupe_thematique_id' + 'foreignKey' => 'groupes_thematique_id' ]); } diff --git a/src/Model/Table/UsersTable.php b/src/Model/Table/UsersTable.php index 68177f6..6af3664 100755 --- a/src/Model/Table/UsersTable.php +++ b/src/Model/Table/UsersTable.php @@ -35,7 +35,7 @@ class UsersTable extends AppTable 'foreignKey' => 'groupes_metier_id' ]); $this->belongsTo('GroupesThematiques', [ - 'foreignKey' => 'groupe_thematique_id' + 'foreignKey' => 'groupes_thematique_id' ]); $this->belongsTo('SurCategories', [ 'foreignKey' => 'sur_categorie_id' @@ -121,7 +121,7 @@ class UsersTable extends AppTable 'groupes_metier_id' ], 'GroupesMetiers')); $rules->add($rules->existsIn([ - 'groupe_thematique_id' + 'groupes_thematique_id' ], 'GroupesThematiques')); $rules->add($rules->existsIn([ 'sur_categorie_id' diff --git a/src/Template/Element/menu_view.ctp b/src/Template/Element/menu_view.ctp index 2466de4..d68d33c 100755 --- a/src/Template/Element/menu_view.ctp +++ b/src/Template/Element/menu_view.ctp @@ -55,7 +55,7 @@ if ($singularHumanName == 'Matériel') { } else if ($role == 'Responsable') { if (isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) { $isAuthorized = true; - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id) { $isAuthorized = true; } else { $isAuthorized = false; @@ -88,7 +88,7 @@ if ($singularHumanName == 'Matériel') { } else if ($role == 'Responsable') { if (isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) { $isAuthorized = true; - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupes_thematique_id) { $isAuthorized = true; } else { $isAuthorized = false; @@ -136,10 +136,10 @@ if ($singularHumanName == 'Matériel') { 'id' => $id, 'groupes_metier_id' => $priviledgedUser->groupes_metier_id ])); - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa) { $isAuthorized = ($suiviTable->exists([ 'id' => $id, - 'groupes_thematique_id' => $priviledgedUser->groupe_thematique_id + 'groupes_thematique_id' => $priviledgedUser->groupes_thematique_id ])); } else { $isAuthorized = false; @@ -160,10 +160,10 @@ if ($singularHumanName == 'Matériel') { 'id' => $id, 'groupes_metier_id' => $priviledgedUser->groupes_metier_id ])); - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa) { $isAuthorized = ($materielTable->exists([ 'id' => $id, - 'groupes_thematique_id' => $priviledgedUser->groupe_thematique_id + 'groupes_thematique_id' => $priviledgedUser->groupes_thematique_id ])); } else { $isAuthorized = false; @@ -232,7 +232,7 @@ if ($singularHumanName == 'Matériel') { } else if ($role == 'Responsable') { if (isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) { $isAuthorized = true; - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id) { $isAuthorized = true; } else { $isAuthorized = false; @@ -258,7 +258,7 @@ if ($singularHumanName == 'Matériel') { } else if ($role == 'Responsable') { if (isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) { $isAuthorized = true; - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupes_thematique_id) { $isAuthorized = true; } else { $isAuthorized = false; @@ -296,10 +296,10 @@ if ($singularHumanName == 'Matériel') { 'id' => $id, 'groupes_metier_id' => $priviledgedUser->groupes_metier_id ])); - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa) { $isAuthorized = ($suiviTable->exists([ 'id' => $id, - 'groupes_thematique_id' => $priviledgedUser->groupe_thematique_id + 'groupes_thematique_id' => $priviledgedUser->groupes_thematique_id ])); } else { $isAuthorized = false; @@ -319,10 +319,10 @@ if ($singularHumanName == 'Matériel') { 'id' => $id, 'groupes_metier_id' => $priviledgedUser->groupes_metier_id ])); - } else if (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa) { + } else if (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa) { $isAuthorized = ($materielTable->exists([ 'id' => $id, - 'groupes_thematique_id' => $priviledgedUser->groupe_thematique_id + 'groupes_thematique_id' => $priviledgedUser->groupes_thematique_id ])); } else { $isAuthorized = false; diff --git a/src/Template/Emprunts/find.ctp b/src/Template/Emprunts/find.ctp index bd49684..543993d 100644 --- a/src/Template/Emprunts/find.ctp +++ b/src/Template/Emprunts/find.ctp @@ -152,7 +152,7 @@ if (isset($_results) && sizeof($_results) != 0) { 'Administration', 'Administration Plus', 'Super Administrateur' - ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $emprunt->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $emprunt->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { + ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $emprunt->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $emprunt->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { echo $this->Html->link(__(''), [ 'action' => 'edit', $emprunt->id diff --git a/src/Template/Materiels/add_edit.ctp b/src/Template/Materiels/add_edit.ctp index 2cce812..94e7626 100644 --- a/src/Template/Materiels/add_edit.ctp +++ b/src/Template/Materiels/add_edit.ctp @@ -153,14 +153,14 @@ $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR && in_array($us $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ( (isset($priviledgedUser->groupes_metier_id) && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || - (isset($priviledgedUser->groupe_thematique_id) && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id) + (isset($priviledgedUser->groupes_thematique_id) && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id) ); */ // EDIT only $USER_IS_SAME_GROUP_AS_MATERIEL = ( ( isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id ) || - ( isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id ) + ( isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id ) ); $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; @@ -380,7 +380,7 @@ if (isset($cpMateriel)) { * $materiel->nom_createur, * $materiel->nom_responsable * ]))) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id || - * $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id))) { + * $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id))) { */ // - DOMAINE (SUR-CATEGORIE) diff --git a/src/Template/Materiels/find.ctp b/src/Template/Materiels/find.ctp index dce9545..96b3e9d 100644 --- a/src/Template/Materiels/find.ctp +++ b/src/Template/Materiels/find.ctp @@ -336,7 +336,7 @@ if (isset($_results) && sizeof($_results) != 0) { 'Administration', 'Administration Plus', 'Super Administrateur' - ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { + ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { echo $this->Html->link('', [ 'action' => 'edit', $materiel->id @@ -367,7 +367,7 @@ if (isset($_results) && sizeof($_results) != 0) { 'Administration', 'Administration Plus', 'Super Administrateur' - ]) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { + ]) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { if (h($materiel->status) == 'CREATED') { echo $this->Html->link('', [ 'action' => 'statusValidated', @@ -408,7 +408,7 @@ if (isset($_results) && sizeof($_results) != 0) { if (($role != 'Utilisateur' && $role != 'Responsable') || in_array($username, [ $materiel->nom_createur, $materiel->nom_responsable - ]) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { + ]) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { echo $this->Html->link(__(''), [ 'action' => 'delete', $materiel->id diff --git a/src/Template/Materiels/index.ctp b/src/Template/Materiels/index.ctp index 86800d9..87ff91a 100644 --- a/src/Template/Materiels/index.ctp +++ b/src/Template/Materiels/index.ctp @@ -1,6 +1,7 @@ 0) { $today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231 // BOUCLE SUR CHAQUE MATERIEL, ligne par ligne + //$mc = new MaterielsController(); foreach ($materiels as $materiel) : - // TODO: Ces variables doivent etre définies par le controleur et passées à la vue (sous forme d'un tableau contenant ces droits pour CHAQUE materiel) + // TODO: Dans l'idéal, ces variables doivent etre définies par le controleur et passées à la vue + // (sous forme d'un tableau contenant ces droits pour CHAQUE materiel) + // Car la vue doit être la moins "intelligente" possible, la plus simple possible $IS_CREATED = ($materiel->status == 'CREATED'); $IS_VALIDATED = ($materiel->status == 'VALIDATED'); $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); @@ -228,18 +232,34 @@ if ($nbMateriels > 0) { $USER_IS_SAME_GROUP_AS_MATERIEL = ( ( isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id!=$idGmNa && $materiel->groupes_metier_id==$priviledgedUser->groupes_metier_id ) || - ( isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id!=$idGtNa && $materiel->groupes_thematique_id==$priviledgedUser->groupe_thematique_id ) + ( isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id!=$idGtNa && $materiel->groupes_thematique_id==$priviledgedUser->groupes_thematique_id ) ); $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; $CONTEXT1 = $USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL; + + // Détermination des autorisations pour tous les boutons "éditer", "supprimer", "valider", ... + $id = $materiel->id; + + $CAN_EDIT = $controller->isAuthorizedAction('edit', $id); + //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL); //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); - $CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL); - $CAN_DELETE = $CAN_EDIT; + + $CAN_DELETE = $controller->isAuthorizedAction('delete', $id); + //$CAN_DELETE = $CAN_EDIT; + + /* $CAN_VALIDATE_OR_INVALIDATE = $USER_IS_ADMIN_OR_MORE || ( ($materiel->materiel_administratif == 0) && $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL ); $CAN_VALIDATE = $IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; $CAN_INVALIDATE = !$IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; $CAN_TBA = $IS_VALIDATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)); $CAN_ARCHIVE = $IS_TOBEARCHIVED && $CAN_VALIDATE_OR_INVALIDATE; + */ + $CAN_INVALIDATE = $controller->isAuthorizedAction('statusCreated', $id); + $CAN_VALIDATE = $controller->isAuthorizedAction('statusValidated', $id); + $CAN_TBA = $controller->isAuthorizedAction('statusTobearchived', $id); + $CAN_ARCHIVE = $controller->isAuthorizedAction('statusArchived', $id); + + // Date fin garantie ? if ($materiel->date_fin_garantie !== NULL) { $timeFin = new time($materiel->date_fin_garantie); diff --git a/src/Template/Materiels/view.ctp b/src/Template/Materiels/view.ctp index 00054cb..8e9c31e 100755 --- a/src/Template/Materiels/view.ctp +++ b/src/Template/Materiels/view.ctp @@ -173,7 +173,7 @@ $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER = $USER_IS_RESPONSABLE && in_array($us $entity->nom_responsable ]); -$USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $entity->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $entity->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)); +$USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $entity->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $entity->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)); */ /* diff --git a/src/Template/Pages/home_app.ctp b/src/Template/Pages/home_app.ctp index a4ff0f7..828327e 100755 --- a/src/Template/Pages/home_app.ctp +++ b/src/Template/Pages/home_app.ctp @@ -55,13 +55,13 @@ if ($role == 'Responsable') { 'controller' => 'materiels', 'action' => 'index', 'GM' => $priviledgedUser->groupes_metier_id, - 'GT' => $priviledgedUser->groupe_thematique_id + 'GT' => $priviledgedUser->groupes_thematique_id ]) . ' '; echo ' ' . $this->Html->link('Voir les suivis des materiels dont je suis responsable', [ 'controller' => 'suivis', 'action' => 'index', 'GM' => $priviledgedUser->groupes_metier_id, - 'GT' => $priviledgedUser->groupe_thematique_id + 'GT' => $priviledgedUser->groupes_thematique_id ]) . ' '; echo ''; } diff --git a/src/Template/Suivis/find.ctp b/src/Template/Suivis/find.ctp index c77a851..2811709 100755 --- a/src/Template/Suivis/find.ctp +++ b/src/Template/Suivis/find.ctp @@ -144,7 +144,7 @@ if (isset($_results) && sizeof($_results) != 0) { 'Administration', 'Administration Plus', 'Super Administrateur' - ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { + ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { echo $this->Html->link(__(''), [ 'action' => 'edit', $suivi->id diff --git a/src/Template/Suivis/index.ctp b/src/Template/Suivis/index.ctp index 060eafd..6094273 100755 --- a/src/Template/Suivis/index.ctp +++ b/src/Template/Suivis/index.ctp @@ -47,7 +47,7 @@ $suivis = $suivis; ( in_array($role, ['Administration','Administration Plus','Super Administrateur'])) || - ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)) + ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)) ) ); if ($CAN_EDIT_DELETE) { diff --git a/src/Template/Suivis/view.ctp b/src/Template/Suivis/view.ctp index b73f63c..15b2ae8 100755 --- a/src/Template/Suivis/view.ctp +++ b/src/Template/Suivis/view.ctp @@ -43,9 +43,9 @@ debug($username); ) || ( - isset($priviledgedUser->groupe_thematique_id) - && $priviledgedUser->groupe_thematique_id != $idGtNa - && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id + isset($priviledgedUser->groupes_thematique_id) + && $priviledgedUser->groupes_thematique_id != $idGtNa + && $suivi->groupes_thematique_id == $priviledgedUser->groupes_thematique_id ) ) ) @@ -270,7 +270,7 @@ debug($username); 'Administration', 'Administration Plus', 'Super Administrateur' - ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id) + ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupes_thematique_id) ))) { echo $this->Html->link(__(''), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0']); echo $this->Form->postLink(__(''), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer le document nommé {0}?', $documents->nom)]); diff --git a/src/Template/Users/add.ctp b/src/Template/Users/add.ctp index dd836fd..b94470f 100755 --- a/src/Template/Users/add.ctp +++ b/src/Template/Users/add.ctp @@ -81,7 +81,7 @@ $users_login_and_email = $users_login_and_email; 'options' => $groupesMetiers, 'default' => 1 ]); - echo $this->Form->control('groupe_thematique_id', [ + echo $this->Form->control('groupes_thematique_id', [ 'label' => $configuration->nom_groupe_thematique, 'options' => $groupesThematiques, 'default' => 1 diff --git a/src/Template/Users/edit.ctp b/src/Template/Users/edit.ctp index 4d3c790..b906c2a 100755 --- a/src/Template/Users/edit.ctp +++ b/src/Template/Users/edit.ctp @@ -84,7 +84,7 @@ 'default' => 1 ]); - echo $this->Form->control('groupe_thematique_id', [ + echo $this->Form->control('groupes_thematique_id', [ 'label' => $configuration->nom_groupe_thematique, 'options' => $groupesThematiques, 'default' => 1 diff --git a/tests/Fixture/MaterielsFixture.php b/tests/Fixture/MaterielsFixture.php index bd02f1a..028ad32 100755 --- a/tests/Fixture/MaterielsFixture.php +++ b/tests/Fixture/MaterielsFixture.php @@ -673,6 +673,7 @@ class MaterielsFixture extends TestFixture { 'lieu_detail' => 'Lorem ipsum dolor sit amet', 'nom_responsable' => 'Lorem ipsum dolor sit amet', //'nom_responsable' => 'user1 SUPER', + //'nom_responsable' => 'user4 RESP', 'email_responsable' => 'Lorem ipsum dolor sit amet', 'nom_createur' => 'Lorem ipsum dolor sit amet', 'nom_modificateur' => 'Lorem ipsum dolor sit amet', diff --git a/tests/Fixture/UsersFixture.php b/tests/Fixture/UsersFixture.php index b1bc422..a450079 100755 --- a/tests/Fixture/UsersFixture.php +++ b/tests/Fixture/UsersFixture.php @@ -24,18 +24,18 @@ class UsersFixture extends TestFixture 'email' => ['type' => 'string', 'length' => 45, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null], 'role' => ['type' => 'string', 'length' => 45, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null], 'groupes_metier_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], - 'groupe_thematique_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], + 'groupes_thematique_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], 'sur_categorie_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], '_indexes' => [ 'fk_users_groupes_travails1' => ['type' => 'index', 'columns' => ['groupes_metier_id'], 'length' => []], - 'fk_users_groupe_thematique_id' => ['type' => 'index', 'columns' => ['groupe_thematique_id'], 'length' => []], + 'fk_users_groupes_thematique_id' => ['type' => 'index', 'columns' => ['groupes_thematique_id'], 'length' => []], 'fk_users_sur_categorie_id' => ['type' => 'index', 'columns' => ['sur_categorie_id'], 'length' => []], ], '_constraints' => [ 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []], 'login_UNIQUE' => ['type' => 'unique', 'columns' => ['username'], 'length' => []], 'fk_users_groupes_travails1' => ['type' => 'foreign', 'columns' => ['groupes_metier_id'], 'references' => ['groupes_metiers', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []], - 'fk_users_groupe_thematique_id' => ['type' => 'foreign', 'columns' => ['groupe_thematique_id'], 'references' => ['groupes_thematiques', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []], + 'fk_users_groupes_thematique_id' => ['type' => 'foreign', 'columns' => ['groupes_thematique_id'], 'references' => ['groupes_thematiques', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []], 'fk_users_sur_categorie_id' => ['type' => 'foreign', 'columns' => ['sur_categorie_id'], 'references' => ['sur_categories', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []], ], '_options' => [ @@ -65,7 +65,7 @@ class UsersFixture extends TestFixture 'email' => 'user1_SUPER@test.fr', 'role' => 'Super Administrateur', 'groupes_metier_id' => 1, - 'groupe_thematique_id' => 1 + 'groupes_thematique_id' => 1 ], // Adminplus @@ -79,7 +79,7 @@ class UsersFixture extends TestFixture 'email' => 'testz@test.fr', 'role' => 'Administration Plus', 'groupes_metier_id' => 1, - 'groupe_thematique_id' => 1 + 'groupes_thematique_id' => 1 ], // Admin @@ -93,7 +93,7 @@ class UsersFixture extends TestFixture 'email' => 'teste@test.fr', 'role' => 'Administration', 'groupes_metier_id' => 1, - 'groupe_thematique_id' => 1 + 'groupes_thematique_id' => 1 ], // Responsable @@ -107,7 +107,7 @@ class UsersFixture extends TestFixture 'email' => 'testr@test.fr', 'role' => 'Responsable', 'groupes_metier_id' => 1, - 'groupe_thematique_id' => 1 + 'groupes_thematique_id' => 1 ], // User (simple user, authentified, but no priviledge) @@ -121,7 +121,7 @@ class UsersFixture extends TestFixture 'email' => 'testt@test.fr', 'role' => 'Utilisateur', 'groupes_metier_id' => 1, - 'groupe_thematique_id' => 1 + 'groupes_thematique_id' => 1 ], ]; diff --git a/tests/TestCase/Controller/UsersControllerTest.php b/tests/TestCase/Controller/UsersControllerTest.php index 328ca9b..71ce6b3 100755 --- a/tests/TestCase/Controller/UsersControllerTest.php +++ b/tests/TestCase/Controller/UsersControllerTest.php @@ -133,7 +133,7 @@ class UsersControllerTest extends General 'email' => 'testo@test.fr', 'role' => 'Super Administrateur', 'groupes_metier_id' => 1, - 'groupe_thematique_id' => 1, + 'groupes_thematique_id' => 1, 'sur_categorie_id' => 1 ]; -- libgit2 0.21.2