Commit 1a23f06bcf65e40ee150111c942eccaf98fd6126

Authored by Etienne Pallier
1 parent 718dc8d1
Exists in master and in 1 other branch dev

AUTORISATIONS DESORMAIS ADAPTABLES POUR CHAQUE LABO (v3.7.9.32)

=> 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 ?
README.md
... ... @@ -53,15 +53,13 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 04/06/2020
57   -Version: 3.7.9.31
  56 +Date: 05/06/2020
  57 +Version: 3.7.9.32
58 58 Author: EP
59 59 Commentaire:
60   - - MISE À JOUR DE TOUS LES CONTROLEURS pour le nouveau système d'autorisation
61   - - SIMPLIFICATION DES AUTORISATIONS POUR LA PLUPART DES CONTROLEURS SIMPLES
62   - - AUTORISATIONS PAR DÉFAUT POUR TOUT NOUVEAU CONTROLEUR BASIQUE
63   - - AMELIORATIONS DE LA PAGE AFFICHANT LES AUTORISATIONS DYNAMIQUEMENT (/pages/acls ou /pages/acls/#nom_du_controleur)
64   - => On peut ainsi vérifier ce qui est appliqué à l'instant T (juste après la modif d'une règle par exemple)
  60 + - AUTORISATIONS DESORMAIS ADAPTABLES POUR CHAQUE LABO
  61 + => chaque labo peut désormais adapter les autorisations des utilisateurs à sa sauce !!!
  62 + => on part des règles générales par défaut, puis on adapte si besoin, cool non ?
65 63  
66 64  
67 65 - 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)
... ... @@ -112,6 +110,13 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi
112 110  
113 111 -----------------------------------------------------------------------------------------------------------
114 112  
  113 +04/06/2020 v3.7.9.31 (EP)
  114 + - MISE À JOUR DE TOUS LES CONTROLEURS pour le nouveau système d'autorisation
  115 + - SIMPLIFICATION DES AUTORISATIONS POUR LA PLUPART DES CONTROLEURS SIMPLES
  116 + - AUTORISATIONS PAR DÉFAUT POUR TOUT NOUVEAU CONTROLEUR BASIQUE
  117 + - AMELIORATIONS DE LA PAGE AFFICHANT LES AUTORISATIONS DYNAMIQUEMENT (/pages/acls ou /pages/acls/#nom_du_controleur)
  118 + => On peut ainsi vérifier ce qui est appliqué à l'instant T (juste après la modif d'une règle par exemple)
  119 +
115 120 03/06/2020 v3.7.9.30 (EP)
116 121 - NOUVELLE PAGE AFFICHANT LES AUTORISATIONS DYNAMIQUEMENT (/pages/acls ou /pages/acls/#nom_du_controleur)
117 122 => On peut ainsi vérifier ce qui est appliqué à l'instant T (juste après la modif d'une règle par exemple)
... ...
src/Controller/AppController.php
... ... @@ -1447,7 +1447,21 @@ class AppController extends Controller
1447 1447 if (is_null($this->confLabinvent)) throw new \Exception("EXCEPTION: La table 'configurations' de la base de données est vide");
1448 1448  
1449 1449 // Initialisation des autorisations pour les actions du controleur
1450   - $this->setAuthorizations();
  1450 + $SPECIFIC_METHOD_EXISTS = false;
  1451 + if ($this->confLabinvent->labNameShort) {
  1452 + $labshortname = $this->confLabinvent->labNameShort;
  1453 + $this->d("lab name is set to $labshortname");
  1454 + $setAuthorizationsSpecific = "setAuthorizations_$labshortname";
  1455 + // Si une méthode spécifique (dans le controleur courant) existe pour CE labo, on l'appelle à la place de la méthode générale
  1456 + // Par exemple pour l'IRAP, ça sera $this=>setAuthorizations_IRAP() :
  1457 + // if (method_exists($this, 'setAuthorizations_IRAP')) $this->setAuthorizations_IRAP();
  1458 + if (method_exists($this, $setAuthorizationsSpecific)) {
  1459 + $SPECIFIC_METHOD_EXISTS = true;
  1460 + $this->$setAuthorizationsSpecific();
  1461 + }
  1462 + }
  1463 + // Sinon, on appelle la méthode générale
  1464 + if (! $SPECIFIC_METHOD_EXISTS) $this->setAuthorizations();
1451 1465  
1452 1466 } // initialize()
1453 1467  
... ...
src/Controller/MaterielsController.php
... ... @@ -251,14 +251,81 @@ class MaterielsController extends AppController {
251 251 } // beforeRender()
252 252  
253 253  
  254 + /*
  255 + * Méthode de définition des autorisations SPÉCIFIQUE au laboratoire IRAP
  256 + *
  257 + * Cette méthode surcharge la méthode générale "setAuthorizations()" ci-après.
  258 + * 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)
  259 + *
  260 + * Pour faire la même chose pour un autre labo qui s'appelerait LABO (selon la valeur donnée par $this->confLabinvent->labNameShort),
  261 + * il suffit de faire une COPIE de cette méthode et de la renommer "setAuthorizations_LABO"
  262 + *
  263 + * On doit faire ça dans CHAQUE controleur où l'on désire des adaptations
  264 + * (ici, c'est seulement pour le contrôleur des Matériels, donc toutes les actions sur la table 'materiels')
  265 + *
  266 + * Pour vérifier que ces règles spécifiques sont bien appliquées, aller sur la page des autorisations /pages/acls
  267 + *
  268 + */
  269 + protected function setAuthorizations_IRAP() {
  270 + $this->d("SPECIFIC IRAP!");
  271 +
  272 + // 1) On appelle d'abord la méthode générale
  273 + $this->setAuthorizations();
  274 +
  275 + // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul
  276 + // - Adaptation de la règle pour "ajout par copie"
  277 + $this->setAuthorizationsForAction('add_by_copy', ['CREATED',0], [
  278 + 'user' => ['CREATED',1],
  279 + 'resp' => 'default',
  280 + ]);
  281 + // - Adaptation de la règle pour "edit" (modif d'un matériel)
  282 + $this->setAuthorizationsForAction('edit', ['CREATED',0], [
  283 + 'user' => ['CREATED',1],
  284 + 'resp' => ['CREATED',1],
  285 + //$admin = 'default',
  286 + //$super = 'default' // + champs techniques
  287 + ]);
  288 + }
  289 + // Méthode de définition des autorisations SPÉCIFIQUE au laboratoire CRAL
  290 + protected function setAuthorizations_CRAL() {
  291 + $this->d("SPECIFIC CRAL!");
  292 +
  293 + // 1) On appelle d'abord la méthode générale
  294 + $this->setAuthorizations();
  295 +
  296 + // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul
  297 + // Voir pour exemple la méthode setAuthorizations_IRAP() ci-dessus.
  298 + }
  299 + // Méthode de définition des autorisations SPÉCIFIQUE au laboratoire LATMOS
  300 + protected function setAuthorizations_LATMOS() {
  301 + $this->d("SPECIFIC CRAL!");
  302 +
  303 + // 1) On appelle d'abord la méthode générale
  304 + $this->setAuthorizations();
  305 +
  306 + // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul
  307 + // Voir pour exemple la méthode setAuthorizations_IRAP() ci-dessus.
  308 + }
  309 + // Méthode de définition des autorisations SPÉCIFIQUE au laboratoire IAS
  310 + protected function setAuthorizations_IAS() {
  311 + $this->d("SPECIFIC CRAL!");
  312 +
  313 + // 1) On appelle d'abord la méthode générale
  314 + $this->setAuthorizations();
  315 +
  316 + // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul
  317 + // Voir pour exemple la méthode setAuthorizations_IRAP() ci-dessus.
  318 + }
  319 +
254 320  
255 321 /*
256 322 * @Override
257 323 *
258   - * Initialisation des autorisations pour les actions de ce controleur
  324 + * Initialisation des autorisations PAR DÉFAUT (générales à tous les labos) pour les actions de ce controleur
259 325 *
260 326 */
261 327 protected function setAuthorizations() {
  328 + //debug("GENERIC!");
262 329  
263 330 // Action 'add' (ajout d'un nouveau matériel) => autorisé pour tous
264 331 $this->setAuthorizationsForAction('add', 0);
... ... @@ -294,7 +361,7 @@ class MaterielsController extends AppController {
294 361 // Action 'edit' (modif d'un matériel)
295 362 $this->setAuthorizationsForAction('edit', ['CREATED',0], [
296 363 'user' => ['CREATED',1],
297   - //'resp' => ['CREATED',1],
  364 + 'resp' => ['CREATED',1],
298 365 //$admin = 'default',
299 366 //$super = 'default' // + champs techniques
300 367 ]);
... ...
src/Controller/SuivisController.php
... ... @@ -13,6 +13,35 @@ class SuivisController extends AppController
13 13 {
14 14  
15 15 /*
  16 + * Méthode de définition des autorisations SPÉCIFIQUE au laboratoire IRAP
  17 + *
  18 + * Cette méthode surcharge la méthode générale "setAuthorizations()" ci-après.
  19 + * 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)
  20 + *
  21 + * Pour faire la même chose pour un autre labo qui s'appelerait LABO (selon la valeur donnée par $this->confLabinvent->labNameShort),
  22 + * il suffit de faire une COPIE de cette méthode et de la renommer "setAuthorizations_LABO"
  23 + *
  24 + * On doit faire ça dans CHAQUE controleur où l'on désire des adaptations
  25 + * (ici, c'est seulement pour le contrôleur des Suivis, donc toutes les actions sur la table 'suivis')
  26 + *
  27 + * Pour vérifier que ces règles spécifiques sont bien appliquées, aller sur la page des autorisations /pages/acls
  28 + *
  29 + */
  30 + protected function setAuthorizations_IRAP() {
  31 + $this->d("SPECIFIC IRAP!");
  32 +
  33 + // 1) On appelle d'abord la méthode générale
  34 + $this->setAuthorizations();
  35 +
  36 + // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul
  37 + // Par exemple, si je veux adapter la règle pour la modificaiton d'un suivi ("edit") :
  38 + $this->setAuthorizationsForAction('edit', 'add', [
  39 + //'user' => ['default',0],
  40 + 'super' => ['default',0],
  41 + ]);
  42 + }
  43 +
  44 + /*
16 45 * @Override
17 46 *
18 47 * Initialisation des autorisations pour les actions spécifiques à ce controleur
... ...