source: spip-zone/_plugins_/info_sites/trunk/info_sites_autorisations.php @ 96325

Last change on this file since 96325 was 96325, checked in by teddy.spip@…, 5 years ago

On continue de régler le problème des autorisations. On prend bien le type d'objet classique de SPIP et pas un type hors sentier. Ça simplifiera la compréhension dans le temps.
ça fonctionne…

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
File size: 12.0 KB
Line 
1<?php
2/**
3 * Définit les autorisations du plugin Info Sites
4 *
5 * @plugin     Info Sites
6 * @copyright  2014-2016
7 * @author     Teddy Payet
8 * @licence    GNU/GPL
9 * @package    SPIP\Info_Sites\Autorisations
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16
17/**
18 * Fonction d'appel pour le pipeline
19 *
20 * @pipeline autoriser
21 */
22function info_sites_autoriser() {
23}
24
25/**
26 * Autorisation d'accès è l'espace privé ?
27 * Surcharge de autoriser_ecrire_dist() > ecrire/inc/autoriser.php
28 *
29 * @param  string $faire Action demandée
30 * @param  string $type  Type d'objet sur lequel appliquer l'action
31 * @param  int    $id    Identifiant de l'objet
32 * @param  array  $qui   Description de l'auteur demandant l'autorisation
33 * @param  array  $opt   Options de cette autorisation
34 *
35 * @return bool          true s'il a le droit, false sinon
36 **/
37function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
38        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
39}
40
41// *****************************
42// Autorisation par défaut
43// *****************************
44
45/**
46 * Autorisation de créer
47 *
48 * @param  string $faire Action demandée
49 * @param  string $type  Type d'objet sur lequel appliquer l'action
50 * @param  int    $id    Identifiant de l'objet
51 * @param  array  $qui   Description de l'auteur demandant l'autorisation
52 * @param  array  $opt   Options de cette autorisation
53 *
54 * @return bool          true s'il a le droit, false sinon
55 **/
56function autoriser_infositescreer_dist($faire, $type, $id, $qui, $opt) {
57        return in_array($qui['statut'], array(
58                '0minirezo',
59                '1comite',
60        ));
61}
62
63/**
64 * Autorisation de voir
65 *
66 * @param  string $faire Action demandée
67 * @param  string $type  Type d'objet sur lequel appliquer l'action
68 * @param  int    $id    Identifiant de l'objet
69 * @param  array  $qui   Description de l'auteur demandant l'autorisation
70 * @param  array  $opt   Options de cette autorisation
71 *
72 * @return bool          true s'il a le droit, false sinon
73 **/
74function autoriser_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
75        return in_array($qui['statut'], array(
76                '0minirezo',
77                '1comite',
78        ));
79}
80
81/**
82 * Autorisation de modifier
83 *
84 * @param  string $faire Action demandée
85 * @param  string $type  Type d'objet sur lequel appliquer l'action
86 * @param  int    $id    Identifiant de l'objet
87 * @param  array  $qui   Description de l'auteur demandant l'autorisation
88 * @param  array  $opt   Options de cette autorisation
89 *
90 * @return bool          true s'il a le droit, false sinon
91 **/
92function autoriser_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
93        return in_array($qui['statut'], array(
94                '0minirezo',
95                '1comite',
96        ));
97}
98
99/**
100 * Autorisation de supprimer
101 *
102 * @param  string $faire Action demandée
103 * @param  string $type  Type d'objet sur lequel appliquer l'action
104 * @param  int    $id    Identifiant de l'objet
105 * @param  array  $qui   Description de l'auteur demandant l'autorisation
106 * @param  array  $opt   Options de cette autorisation
107 *
108 * @return bool          true s'il a le droit, false sinon
109 **/
110function autoriser_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
111        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
112}
113
114
115/**
116 * Autorisation de mise à jour
117 *
118 * @param  string $faire Action demandée
119 * @param  string $type  Type d'objet sur lequel appliquer l'action
120 * @param  int    $id    Identifiant de l'objet
121 * @param  array  $qui   Description de l'auteur demandant l'autorisation
122 * @param  array  $opt   Options de cette autorisation
123 *
124 * @return bool          true s'il a le droit, false sinon
125 **/
126function autoriser_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
127        return in_array($qui['statut'], array(
128                '0minirezo',
129                '1comite',
130        ));
131}
132
133/**
134 * Autorisation d'association
135 *
136 * @param  string $faire Action demandée
137 * @param  string $type  Type d'objet sur lequel appliquer l'action
138 * @param  int    $id    Identifiant de l'objet
139 * @param  array  $qui   Description de l'auteur demandant l'autorisation
140 * @param  array  $opt   Options de cette autorisation
141 *
142 * @return bool          true s'il a le droit, false sinon
143 **/
144function autoriser_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
145        return in_array($qui['statut'], array(
146                '0minirezo',
147                '1comite',
148        ));
149}
150
151// *****************************
152// Les sites de projets (projetssite)
153// *****************************
154
155/**
156 * Autorisation de créer (projetssite)
157 *
158 * @param  string $faire Action demandée
159 * @param  string $type  Type d'objet sur lequel appliquer l'action
160 * @param  int    $id    Identifiant de l'objet
161 * @param  array  $qui   Description de l'auteur demandant l'autorisation
162 * @param  array  $opt   Options de cette autorisation
163 *
164 * @return bool          true s'il a le droit, false sinon
165 **/
166function autoriser_projetssite_infositescreer_dist($faire, $type, $id, $qui, $opt) {
167        return in_array($qui['statut'], array(
168                '0minirezo',
169                '1comite',
170        ));
171}
172
173/**
174 * Autorisation de voir (projetssite)
175 *
176 * @param  string $faire Action demandée
177 * @param  string $type  Type d'objet sur lequel appliquer l'action
178 * @param  int    $id    Identifiant de l'objet
179 * @param  array  $qui   Description de l'auteur demandant l'autorisation
180 * @param  array  $opt   Options de cette autorisation
181 *
182 * @return bool          true s'il a le droit, false sinon
183 **/
184function autoriser_projetssite_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
185        echo "<pre>";
186        var_dump($qui);
187        echo "</pre>";
188        return in_array($qui['statut'], array(
189                '0minirezo',
190                '1comite',
191        ));
192}
193
194/**
195 * Autorisation de modifier (projetssite)
196 *
197 * @param  string $faire Action demandée
198 * @param  string $type  Type d'objet sur lequel appliquer l'action
199 * @param  int    $id    Identifiant de l'objet
200 * @param  array  $qui   Description de l'auteur demandant l'autorisation
201 * @param  array  $opt   Options de cette autorisation
202 *
203 * @return bool          true s'il a le droit, false sinon
204 **/
205function autoriser_projetssite_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
206        return in_array($qui['statut'], array(
207                '0minirezo',
208                '1comite',
209        ));
210}
211
212/**
213 * Autorisation de supprimer (projetssite)
214 *
215 * @param  string $faire Action demandée
216 * @param  string $type  Type d'objet sur lequel appliquer l'action
217 * @param  int    $id    Identifiant de l'objet
218 * @param  array  $qui   Description de l'auteur demandant l'autorisation
219 * @param  array  $opt   Options de cette autorisation
220 *
221 * @return bool          true s'il a le droit, false sinon
222 **/
223function autoriser_projetssite_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
224        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
225}
226
227
228/**
229 * Autorisation de mise à jour (projetssite)
230 *
231 * @param  string $faire Action demandée
232 * @param  string $type  Type d'objet sur lequel appliquer l'action
233 * @param  int    $id    Identifiant de l'objet
234 * @param  array  $qui   Description de l'auteur demandant l'autorisation
235 * @param  array  $opt   Options de cette autorisation
236 *
237 * @return bool          true s'il a le droit, false sinon
238 **/
239function autoriser_projetssite_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
240        return in_array($qui['statut'], array(
241                '0minirezo',
242                '1comite',
243        ));
244}
245
246/**
247 * Autorisation d'association (projetssite)
248 *
249 * @param  string $faire Action demandée
250 * @param  string $type  Type d'objet sur lequel appliquer l'action
251 * @param  int    $id    Identifiant de l'objet
252 * @param  array  $qui   Description de l'auteur demandant l'autorisation
253 * @param  array  $opt   Options de cette autorisation
254 *
255 * @return bool          true s'il a le droit, false sinon
256 **/
257function autoriser_projetssites_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
258        return in_array($qui['statut'], array(
259                '0minirezo',
260                '1comite',
261        ));
262}
263
264/**
265 * Autorisation de voir les données sensibles (projetssite)
266 *
267 * @param  string $faire Action demandée
268 * @param  string $type  Type d'objet sur lequel appliquer l'action
269 * @param  int    $id    Identifiant de l'objet
270 * @param  array  $qui   Description de l'auteur demandant l'autorisation
271 * @param  array  $opt   Options de cette autorisation
272 *
273 * @return bool          true s'il a le droit, false sinon
274 **/
275function autoriser_projetssitesecurite_voir($faire, $type, $id, $qui, $opt) {
276        include_spip('base/abstract_sql');
277        $auteurs = sql_fetsel("role", "spip_auteurs_liens",
278                "objet='projet' AND id_objet IN (SELECT id_objet FROM spip_projets_sites_liens WHERE objet='projet' AND id_projets_site=" . $id . ") AND id_auteur=" . $qui['id_auteur']);
279
280        if (isset($auteurs['role'])) {
281                // Pour le moment, quelque soit le rôle de l'auteur, il peut voir les éléments sécurisés
282                // En effet, l'auteur a été ajouté au projet du site, donc, il fait parti de l'équipe.
283                return true;
284        }
285
286        // Si l'auteur ne fait pas parti de l'équipe, on prend en compte son statut.
287        return $qui['statut'] == '0minirezo';
288}
289
290// *****************************
291// Les projets
292// *****************************
293
294/**
295 * Autorisation de créer (projet)
296 *
297 * @param  string $faire Action demandée
298 * @param  string $type  Type d'objet sur lequel appliquer l'action
299 * @param  int    $id    Identifiant de l'objet
300 * @param  array  $qui   Description de l'auteur demandant l'autorisation
301 * @param  array  $opt   Options de cette autorisation
302 *
303 * @return bool          true s'il a le droit, false sinon
304 **/
305function autoriser_projet_infositescreer_dist($faire, $type, $id, $qui, $opt) {
306        return in_array($qui['statut'], array(
307                '0minirezo',
308                '1comite',
309        ));
310}
311
312/**
313 * Autorisation de voir (projet)
314 *
315 * @param  string $faire Action demandée
316 * @param  string $type  Type d'objet sur lequel appliquer l'action
317 * @param  int    $id    Identifiant de l'objet
318 * @param  array  $qui   Description de l'auteur demandant l'autorisation
319 * @param  array  $opt   Options de cette autorisation
320 *
321 * @return bool          true s'il a le droit, false sinon
322 **/
323function autoriser_projet_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
324        return true;
325}
326
327/**
328 * Autorisation de modifier (projet)
329 *
330 * @param  string $faire Action demandée
331 * @param  string $type  Type d'objet sur lequel appliquer l'action
332 * @param  int    $id    Identifiant de l'objet
333 * @param  array  $qui   Description de l'auteur demandant l'autorisation
334 * @param  array  $opt   Options de cette autorisation
335 *
336 * @return bool          true s'il a le droit, false sinon
337 **/
338function autoriser_projet_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
339        return in_array($qui['statut'], array(
340                '0minirezo',
341                '1comite',
342        ));
343}
344
345/**
346 * Autorisation de supprimer (projet)
347 *
348 * @param  string $faire Action demandée
349 * @param  string $type  Type d'objet sur lequel appliquer l'action
350 * @param  int    $id    Identifiant de l'objet
351 * @param  array  $qui   Description de l'auteur demandant l'autorisation
352 * @param  array  $opt   Options de cette autorisation
353 *
354 * @return bool          true s'il a le droit, false sinon
355 **/
356function autoriser_projet_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
357        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
358}
359
360/**
361 * Autorisation de mise à jour (projet)
362 *
363 * @param  string $faire Action demandée
364 * @param  string $type  Type d'objet sur lequel appliquer l'action
365 * @param  int    $id    Identifiant de l'objet
366 * @param  array  $qui   Description de l'auteur demandant l'autorisation
367 * @param  array  $opt   Options de cette autorisation
368 *
369 * @return bool          true s'il a le droit, false sinon
370 **/
371function autoriser_projet_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
372        return in_array($qui['statut'], array(
373                '0minirezo',
374                '1comite',
375        ));
376}
377
378/**
379 * Autorisation d'association (projet)
380 *
381 * @param  string $faire Action demandée
382 * @param  string $type  Type d'objet sur lequel appliquer l'action
383 * @param  int    $id    Identifiant de l'objet
384 * @param  array  $qui   Description de l'auteur demandant l'autorisation
385 * @param  array  $opt   Options de cette autorisation
386 *
387 * @return bool          true s'il a le droit, false sinon
388 **/
389function autoriser_projets_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
390        return in_array($qui['statut'], array(
391                '0minirezo',
392                '1comite',
393        ));
394}
395
Note: See TracBrowser for help on using the repository browser.