Commit 0c5cf28a3c5165b4729cc5c407ee509744929641
1 parent
fd39b221
Exists in
master
and in
3 other branches
petits commentaires utiles
Showing
2 changed files
with
34 additions
and
6 deletions
Show diff stats
src/Controller/AppController.php
@@ -94,23 +94,23 @@ class AppController extends Controller { | @@ -94,23 +94,23 @@ class AppController extends Controller { | ||
94 | 94 | ||
95 | // error_log($action); | 95 | // error_log($action); |
96 | 96 | ||
97 | - // Super-Admin peut accéder à chaque action | 97 | + // ACL : Super-Admin peut accéder à chaque action |
98 | if ($role == 'Super Administrateur') | 98 | if ($role == 'Super Administrateur') |
99 | return true; | 99 | return true; |
100 | 100 | ||
101 | - // Pour tout le monde | 101 | + // ACL : Pour tout le monde |
102 | if (in_array($action, [ | 102 | if (in_array($action, [ |
103 | 'index', | 103 | 'index', |
104 | - 'find', | ||
105 | 'view', | 104 | 'view', |
106 | - 'creer', | ||
107 | 'add', | 105 | 'add', |
106 | + 'find', | ||
107 | + 'creer', | ||
108 | 'getNextDate', | 108 | 'getNextDate', |
109 | 'getDateGarantie' | 109 | 'getDateGarantie' |
110 | ])) | 110 | ])) |
111 | return true; | 111 | return true; |
112 | 112 | ||
113 | - // Par défaut refuser | 113 | + // ACL : Par défaut refuser |
114 | return false; | 114 | return false; |
115 | } | 115 | } |
116 | 116 |
src/Controller/MaterielsController.php
@@ -53,7 +53,7 @@ class MaterielsController extends AppController { | @@ -53,7 +53,7 @@ class MaterielsController extends AppController { | ||
53 | * authorization for materiels | 53 | * authorization for materiels |
54 | * @return boolean | 54 | * @return boolean |
55 | */ | 55 | */ |
56 | - //(EP) TODO: ameliorer ca avec des variables globales IS_VALIDATED, IS_ADMIN, ... | 56 | + // (EP) TODO: ameliorer ca avec des variables globales IS_VALIDATED, IS_ADMIN, ... |
57 | public function isAuthorized($user) { | 57 | public function isAuthorized($user) { |
58 | $configuration = $this->confLabinvent; | 58 | $configuration = $this->confLabinvent; |
59 | // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | 59 | // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); |
@@ -63,9 +63,28 @@ class MaterielsController extends AppController { | @@ -63,9 +63,28 @@ class MaterielsController extends AppController { | ||
63 | $this->role = $role; | 63 | $this->role = $role; |
64 | $action = $this->request->params['action']; | 64 | $action = $this->request->params['action']; |
65 | 65 | ||
66 | + // INDEX, VIEW, ADD, FIND | ||
67 | + // ACL: Accessibles à tous ( cf parent::isAuthorized() ) | ||
68 | + | ||
69 | + // EDIT | ||
66 | if ($action == 'edit') { | 70 | if ($action == 'edit') { |
67 | $id = (int) $this->request->params['pass'][0]; | 71 | $id = (int) $this->request->params['pass'][0]; |
68 | 72 | ||
73 | + // (EP) TODO: il me semble qu'on devrait ajouter ici | ||
74 | + // || $this->isToBeArchived($id) | ||
75 | + // ainsi qu'une autre règle pour isArchived($id) | ||
76 | + // ??? | ||
77 | + | ||
78 | + /* (EP) ACL: | ||
79 | + * | ||
80 | + * - adminplus et superadmin sont autorisés par défaut dans tous les cas | ||
81 | + * | ||
82 | + * SSi materiel CREATED ou VALIDATED, autoriser : | ||
83 | + * - user : si createur de la fiche ou owner du materiel | ||
84 | + * - resp : si responsable du groupe thematique ou metier de ce materiel | ||
85 | + * - admin et + : toujours | ||
86 | + * | ||
87 | + */ | ||
69 | if ($this->isCreated($id) || $this->isValidated($id)) { | 88 | if ($this->isCreated($id) || $this->isValidated($id)) { |
70 | 89 | ||
71 | if ($role == 'Utilisateur' && $this->isOwnedBy($id, $user['sn'][0] . ' ' . $user['givenname'][0])) { | 90 | if ($role == 'Utilisateur' && $this->isOwnedBy($id, $user['sn'][0] . ' ' . $user['givenname'][0])) { |
@@ -81,9 +100,16 @@ class MaterielsController extends AppController { | @@ -81,9 +100,16 @@ class MaterielsController extends AppController { | ||
81 | } | 100 | } |
82 | } | 101 | } |
83 | 102 | ||
103 | + // DELETE | ||
84 | if ($action == 'delete') { | 104 | if ($action == 'delete') { |
85 | $id = (int) $this->request->params['pass'][0]; | 105 | $id = (int) $this->request->params['pass'][0]; |
86 | 106 | ||
107 | + /* (EP) ACL: | ||
108 | + * SSi materiel CREATED, autoriser : | ||
109 | + * - user : si createur de la fiche ou owner du materiel | ||
110 | + * - resp : si responsable du groupe thematique ou metier de ce materiel | ||
111 | + * - admin et + : toujours | ||
112 | + */ | ||
87 | if ($this->isCreated($id)) { | 113 | if ($this->isCreated($id)) { |
88 | if ($role == 'Utilisateur' && $this->isOwnedBy($id, $user['sn'][0] . ' ' . $user['givenname'][0])) { | 114 | if ($role == 'Utilisateur' && $this->isOwnedBy($id, $user['sn'][0] . ' ' . $user['givenname'][0])) { |
89 | return true; | 115 | return true; |
@@ -152,6 +178,7 @@ class MaterielsController extends AppController { | @@ -152,6 +178,7 @@ class MaterielsController extends AppController { | ||
152 | } | 178 | } |
153 | } | 179 | } |
154 | 180 | ||
181 | + // Autorisations par defaut: | ||
155 | return parent::isAuthorized($user); | 182 | return parent::isAuthorized($user); |
156 | } | 183 | } |
157 | 184 | ||
@@ -410,6 +437,7 @@ class MaterielsController extends AppController { | @@ -410,6 +437,7 @@ class MaterielsController extends AppController { | ||
410 | * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. | 437 | * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. |
411 | */ | 438 | */ |
412 | public function add($valeurs = null, $erreurs = null) { | 439 | public function add($valeurs = null, $erreurs = null) { |
440 | + | ||
413 | $materiel = $this->Materiels->newEntity(); | 441 | $materiel = $this->Materiels->newEntity(); |
414 | if ($this->request->is('post')) { | 442 | if ($this->request->is('post')) { |
415 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); | 443 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); |