Commit 1a23f06bcf65e40ee150111c942eccaf98fd6126
1 parent
718dc8d1
Exists in
master
and in
1 other branch
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 ?
Showing
4 changed files
with
125 additions
and
10 deletions
Show diff stats
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 | ... | ... |