acls.ctp
10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<?php
use App\Controller\MaterielsController;
use App\Controller\SuivisController;
use App\Controller\EmpruntsController;
use App\Controller\DocumentsController;
use App\Controller\UsersController;
use App\Controller\ConfigurationsController;
use App\Controller\FournisseursController;
use App\Controller\PagesController;
use App\Controller\SurCategoriesController;
use App\Controller\FichemetrologiquesController;
use App\Controller\FormulesController;
use App\Controller\QrCodesController;
// Variables passées à la vue par le controleur
$lab_name = $lab_name;
//$controllers = ['Materiels'];
//$controllers = ['Materiels', 'Suivis'];
$controllers = [
new MaterielsController(),
new SuivisController(),
new EmpruntsController(),
new DocumentsController(),
new PagesController(),
new FournisseursController(),
new SurCategoriesController(),
new ConfigurationsController(),
new UsersController(),
new FichemetrologiquesController(),
new FormulesController(),
new QrCodesController(),
// TODO:
//new UsersController(),
// ...
];
function displayAuthorizationsForController($c, $lab_name) {
?>
<a id="<?=$c->name?>">
<u><b>Autorisations pour les <?=$c->name?> :</b></u>
</a>
<br><br>
Pour changer ces autorisations, ouvrir le fichier /src/Controller/<?=$c->name?>Controller.php :
<ul>
<li>
modifier les règles (LOCALES) dans la fonction setAuthorizations_<?=$lab_name?>() => elles ne s'appliqueront qu'à CE laboratoire
</li>
<li>
modifier les règles (GÉNÉRALES) dans la fonction setAuthorizations() => elles s'appliqueront à TOUS les laboratoires
</li>
</ul>
<i>
Veuillez ensuite partager ces modifications en les intégrant au code source général du logiciel (ainsi que toute autre modification effectuée)
via la commande "./PUSH_MODIFS"
</i>
<p>
<!--
<table border=1>
-->
<table>
<thead>
<tr>
<th></th>
<th colspan="10">CONDITIONS D'ACCÈS <br>(Statut et Appartenance du matériel)</th>
<!--
<th colspan="2">Condition d'accès<br>(Statut & Appartenance<br>du matériel)</th>
<th colspan="2">Condition d'accès<br>(Statut & Appartenance<br>du matériel)</th>
<th colspan="2">Condition d'accès<br>(Statut & Appartenance<br>du matériel)</th>
<th colspan="2">Condition d'accès<br>(Statut & Appartenance<br>du matériel)</th>
-->
</tr>
<tr>
<th scope="col">ACTION</th>
<th scope="col" colspan="2">GÉNÉRAL<br>(règles par défaut)</th>
<th scope="col" colspan="2">Utilisateur<br>(profil)</th>
<th scope="col" colspan="2">Responsable<br>(profil)</th>
<th scope="col" colspan="2">Administratif<br>(profil Gestionnaire)</th>
<th scope="col" colspan="2">Super Administrateur<br>(profil)</th>
</tr>
</thead>
<tbody>
<?php
$authorizations = $c->getAuthorizations();
foreach (array_keys($authorizations) as $action) {
?>
<!-- Autorisations pour chaque action ($action) -->
<tr>
<?php
$authorizationsForCurrentAction = $authorizations[$action];
$alias = $authorizationsForCurrentAction['alias'];
if ($alias) $action.=" ($alias)";
?>
<th class="action" scope="row"><?=$action?></th>
<?php
foreach (array_keys($authorizationsForCurrentAction) as $role) {
// Autorisations pour chaque role ($role)
// On zappe l'alias
if ($role == 'alias') continue;
// On zappe le role "admin plus"
if ($role == 'adminp') continue;
$authorizationsForCurrentActionAndRole = $authorizationsForCurrentAction[$role];
if (! is_array($authorizationsForCurrentActionAndRole)) {
$color='black';
if ($authorizationsForCurrentActionAndRole === 'default' || $authorizationsForCurrentActionAndRole === 0) {
//$authorizationsForCurrentActionAndRole = 'règle générale';
$authorizationsForCurrentActionAndRole = 'aucune';
$color='green';
}
elseif ($authorizationsForCurrentActionAndRole === -1) {
$authorizationsForCurrentActionAndRole = 'interdit';
$color='red';
}
?>
<td colspan="2" style="color:<?=$color?>"><?=$authorizationsForCurrentActionAndRole?></td>
<?php
}
else {
// 1) Condition sur le STATUT
$condition_status = $authorizationsForCurrentActionAndRole[0];
$color1='red';
if ($condition_status === 0) {
$condition_status = 'aucune';
$color1='green';
}
// 2) Condition sur l'APPARTENANCE
$condition_belonging = $authorizationsForCurrentActionAndRole[1];
$condition_belonging = $condition_belonging===0 ? 'N' : 'Y';
$color2 = $condition_belonging==='N' ? 'green' : 'red';
?>
<td style="color:<?=$color1?>"><?=$condition_status?></td>
<td style="color:<?=$color2?>"><?=$condition_belonging?></td>
<?php
}
}
?>
</tr>
<!-- Autorisations pour l'action $a -->
<?php
}
?>
</tbody>
</table>
<?php
} // displayAuthorizationsForController
?>
<style>
table {
/*
border-collapse: separate;
border: 1mm ridge grey;
*/
border: 1mm ridge grey;
}
td, th {
border: 1px solid #000;
/*
padding: 5px;
*/
}
th {
text-align: center;
}
th.action {
text-align: left;
}
</style>
<h2>
<!--
<i class="icon-print"></i>
-->
<center>
AUTORISATIONS DES UTILISATEURS<p>
(droits en fonction des profils)
</center>
</h2>
<p>
Les tableaux ci-dessous sont générés dynamiquement en fonction des autorisations actuelles.
Ils sont donc totalement à jour et reflètent la réalité de l'expérience sur le site.
</p>
<!--
<br />
<br />
<h3>AUTORISATIONS DES UTILISATEURS (PROFILS)</h3>
-->
<br />
<p>
<!-- ancien lien WIKI
<a href="https://projects.irap.omp.eu/projects/inventirap/wiki/Installation#I-Etiquettes-optionnel">
-->
<!-- new lien GDOC -->
=> <a href="https://docs.google.com/spreadsheets/d/16uAq_ko6bpKGxRZTL9rWq5XZ6kaVGMqowLURpBBdJJU">
Lien vers le tableau des autorisations (fait à la main, donc pas forcément à jour)
</a>
<br>
=> <a href="https://docs.google.com/document/d/1JTi3YX6X33asn9vfPGAPaFZ3u8IMGnAqCf2Ge0nWdtI/edit#heading=h.jaa6i3mtbmnr">
Lien vers le chapitre sur les Autorisations dans la documentation technique
</a>
</p>
<hr />
<u><b>Tableaux des conditions d'accès pour chaque entité</b></u>
<br><br>
<?php
echo '<u>';
foreach ($controllers as $controller) {
echo "<li><a href='#{$controller->name}'>{$controller->name}</a></li>";
//echo '<br>';
}
echo '</u>';
?>
<hr />
<p>
<u><b>Légende</b></u> :
<ul>
<li><b>Couleur</b></li>
<ul>
<li><b style="color:red">rouge</b> => accès restreint partiellement ou totalement (il y a une condition d'accès)</li>
<li><b style="color:green">vert</b> => accès autorisé (PAS de condition d'accès)</li>
</ul>
<li><b>Condition sur le statut</b></li>
<ul>
<li><b>CREATED</b> => Le matériel doit avoir le statut "CREATED" ("créé")
<li><b>NOT CREATED</b> => Le matériel ne doit PAS avoir le statut "CREATED" (il doit donc avoir un statut supérieur)
<li><b>VALIDATED</b> => Le matériel doit être validé
<li><b>...</b>
</ul>
</li>
<li><b>Condition sur l'appartenance</b></li>
<ul>
<li><b>Y</b> => L'utilisateur connecté doit être le "propriétaire" (utilisateur principal) du matériel (ou le responsable)
<li><b>N</b> => Pas de condition d'appartenance
</ul>
</li>
</ul>
</p>
<hr />
<p>
<u><b>Exemples d'interprétation (d'après le 1er tableau ci-dessous) :</b></u>
<ul>
<li>action "<b>add_by_copy</b>" => créer un matériel par copie d'un autre :
<ul>
<li>
on ne peut la faire que sur un matériel CREATED
</li>
<li>
un profil "user" a le droit de la faire seulement sur un matériel qui lui appartient, un "responsable" seulement sur un matériel qui lui appartient ou bien qui est du même groupe que lui,
alors qu'un "admin" (gestionnaire) ou bien "superadmin" peuvent aussi la faire sur un matériel qui ne leur appartient pas
</li>
</ul>
</li>
<li>action "<b>devalidate (statusCreated)</b>" => remettre le matériel dans l'état CREATED :
<ul>
<li>
on peut la faire sur tout matériel sauf de statut CREATED
</li>
<li>
un "user" n'y est pas autorisé ; un "responsable" peut la faire seulement sur un matériel qui lui appartient ou du même groupe que lui alors qu'un "admin" ou "superadmin" peut la faire sur tout matériel (sauf CREATED)
</li>
</ul>
</li>
<li>action "<b>upgrade (statusValidated, statusTobearchived, statusArchived)</b>" => augmenter le statut d'un matériel (CREATED => VALIDATED => TOBEARCHIVED => ARCHIVED) :
<ul>
<li>
on peut la faire sur tout matériel qui a le statut juste inférieur (ex: statusValidated ne peut être fait que si statut actuel est CREATED)
</li>
<li>
un profil "user" ou "responsable" ne peut faire que l'action statusTobearchived (demande d'archivage) sur un matériel qui lui appartient (ou du même groupe que lui pour le "responsable")
alors qu'un "admin" (et +) peut faire TOUTES les actions statusXXX et sur TOUT matériel
</li>
</ul>
</li>
</ul>
</p>
<hr />
<?php
//var_dump($mc->getAuthorizationForAction('edit'));
foreach ($controllers as $controller) {
//$mc = new MaterielsController();
/*
$controller_name = 'MaterielsController';
$controller = new $controller_name ();
$controller_name = $c.'Controller';
$controller = (new $controller_name());
*/
echo '<br>';
displayAuthorizationsForController($controller, $lab_name);
echo '<br>';
echo "<a href='#'>Haut de page</a>";
echo '<hr />';
}
?>