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

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

Sans le mode debug

  • 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        return in_array($qui['statut'], array(
186                '0minirezo',
187                '1comite',
188        ));
189}
190
191/**
192 * Autorisation de modifier (projetssite)
193 *
194 * @param  string $faire Action demandée
195 * @param  string $type  Type d'objet sur lequel appliquer l'action
196 * @param  int    $id    Identifiant de l'objet
197 * @param  array  $qui   Description de l'auteur demandant l'autorisation
198 * @param  array  $opt   Options de cette autorisation
199 *
200 * @return bool          true s'il a le droit, false sinon
201 **/
202function autoriser_projetssite_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
203        return in_array($qui['statut'], array(
204                '0minirezo',
205                '1comite',
206        ));
207}
208
209/**
210 * Autorisation de supprimer (projetssite)
211 *
212 * @param  string $faire Action demandée
213 * @param  string $type  Type d'objet sur lequel appliquer l'action
214 * @param  int    $id    Identifiant de l'objet
215 * @param  array  $qui   Description de l'auteur demandant l'autorisation
216 * @param  array  $opt   Options de cette autorisation
217 *
218 * @return bool          true s'il a le droit, false sinon
219 **/
220function autoriser_projetssite_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
221        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
222}
223
224
225/**
226 * Autorisation de mise à jour (projetssite)
227 *
228 * @param  string $faire Action demandée
229 * @param  string $type  Type d'objet sur lequel appliquer l'action
230 * @param  int    $id    Identifiant de l'objet
231 * @param  array  $qui   Description de l'auteur demandant l'autorisation
232 * @param  array  $opt   Options de cette autorisation
233 *
234 * @return bool          true s'il a le droit, false sinon
235 **/
236function autoriser_projetssite_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
237        return in_array($qui['statut'], array(
238                '0minirezo',
239                '1comite',
240        ));
241}
242
243/**
244 * Autorisation d'association (projetssite)
245 *
246 * @param  string $faire Action demandée
247 * @param  string $type  Type d'objet sur lequel appliquer l'action
248 * @param  int    $id    Identifiant de l'objet
249 * @param  array  $qui   Description de l'auteur demandant l'autorisation
250 * @param  array  $opt   Options de cette autorisation
251 *
252 * @return bool          true s'il a le droit, false sinon
253 **/
254function autoriser_projetssites_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
255        return in_array($qui['statut'], array(
256                '0minirezo',
257                '1comite',
258        ));
259}
260
261/**
262 * Autorisation de voir les données sensibles (projetssite)
263 *
264 * @param  string $faire Action demandée
265 * @param  string $type  Type d'objet sur lequel appliquer l'action
266 * @param  int    $id    Identifiant de l'objet
267 * @param  array  $qui   Description de l'auteur demandant l'autorisation
268 * @param  array  $opt   Options de cette autorisation
269 *
270 * @return bool          true s'il a le droit, false sinon
271 **/
272function autoriser_projetssitesecurite_voir($faire, $type, $id, $qui, $opt) {
273        include_spip('base/abstract_sql');
274        $auteurs = sql_fetsel("role", "spip_auteurs_liens",
275                "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']);
276
277        if (isset($auteurs['role'])) {
278                // Pour le moment, quelque soit le rôle de l'auteur, il peut voir les éléments sécurisés
279                // En effet, l'auteur a été ajouté au projet du site, donc, il fait parti de l'équipe.
280                return true;
281        }
282
283        // Si l'auteur ne fait pas parti de l'équipe, on prend en compte son statut.
284        return $qui['statut'] == '0minirezo';
285}
286
287// *****************************
288// Les projets
289// *****************************
290
291/**
292 * Autorisation de créer (projet)
293 *
294 * @param  string $faire Action demandée
295 * @param  string $type  Type d'objet sur lequel appliquer l'action
296 * @param  int    $id    Identifiant de l'objet
297 * @param  array  $qui   Description de l'auteur demandant l'autorisation
298 * @param  array  $opt   Options de cette autorisation
299 *
300 * @return bool          true s'il a le droit, false sinon
301 **/
302function autoriser_projet_infositescreer_dist($faire, $type, $id, $qui, $opt) {
303        return in_array($qui['statut'], array(
304                '0minirezo',
305                '1comite',
306        ));
307}
308
309/**
310 * Autorisation de voir (projet)
311 *
312 * @param  string $faire Action demandée
313 * @param  string $type  Type d'objet sur lequel appliquer l'action
314 * @param  int    $id    Identifiant de l'objet
315 * @param  array  $qui   Description de l'auteur demandant l'autorisation
316 * @param  array  $opt   Options de cette autorisation
317 *
318 * @return bool          true s'il a le droit, false sinon
319 **/
320function autoriser_projet_infositesvoir_dist($faire, $type, $id, $qui, $opt) {
321        return true;
322}
323
324/**
325 * Autorisation de modifier (projet)
326 *
327 * @param  string $faire Action demandée
328 * @param  string $type  Type d'objet sur lequel appliquer l'action
329 * @param  int    $id    Identifiant de l'objet
330 * @param  array  $qui   Description de l'auteur demandant l'autorisation
331 * @param  array  $opt   Options de cette autorisation
332 *
333 * @return bool          true s'il a le droit, false sinon
334 **/
335function autoriser_projet_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
336        return in_array($qui['statut'], array(
337                '0minirezo',
338                '1comite',
339        ));
340}
341
342/**
343 * Autorisation de supprimer (projet)
344 *
345 * @param  string $faire Action demandée
346 * @param  string $type  Type d'objet sur lequel appliquer l'action
347 * @param  int    $id    Identifiant de l'objet
348 * @param  array  $qui   Description de l'auteur demandant l'autorisation
349 * @param  array  $opt   Options de cette autorisation
350 *
351 * @return bool          true s'il a le droit, false sinon
352 **/
353function autoriser_projet_infositessupprimer_dist($faire, $type, $id, $qui, $opt) {
354        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
355}
356
357/**
358 * Autorisation de mise à jour (projet)
359 *
360 * @param  string $faire Action demandée
361 * @param  string $type  Type d'objet sur lequel appliquer l'action
362 * @param  int    $id    Identifiant de l'objet
363 * @param  array  $qui   Description de l'auteur demandant l'autorisation
364 * @param  array  $opt   Options de cette autorisation
365 *
366 * @return bool          true s'il a le droit, false sinon
367 **/
368function autoriser_projet_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
369        return in_array($qui['statut'], array(
370                '0minirezo',
371                '1comite',
372        ));
373}
374
375/**
376 * Autorisation d'association (projet)
377 *
378 * @param  string $faire Action demandée
379 * @param  string $type  Type d'objet sur lequel appliquer l'action
380 * @param  int    $id    Identifiant de l'objet
381 * @param  array  $qui   Description de l'auteur demandant l'autorisation
382 * @param  array  $opt   Options de cette autorisation
383 *
384 * @return bool          true s'il a le droit, false sinon
385 **/
386function autoriser_projets_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
387        return in_array($qui['statut'], array(
388                '0minirezo',
389                '1comite',
390        ));
391}
392
Note: See TracBrowser for help on using the repository browser.