source: spip-zone/_plugins_/pages/trunk/pages_autorisations.php @ 85654

Last change on this file since 85654 was 84174, checked in by eric@…, 6 years ago

Evolutions du plugin dont certaines peuvent être considérées comme des corrections:

  • la page pages_tous devient pages ce qui est plus cohérent avec les autres objets.
  • ajout et utilisation des autorisations classiques pour un obet 'page' : creer, modifier et voir. Ces autorisations et les suivantes sont par défaut positionnées à admin complet. Une fonction surchargeable permet de toutes les modifier d'un coup.
  • ajout de l'autorisation pages_voir pour afficher la liste des pages uniques (exec=pages)
  • ajout des autorisations d'affichage des menus pages et pagecreer. Ces autorisations font appel respectivement à pages_voir et page_creer.
  • utilisation du pipeline pre_boucle sur la boucle ARTICLES afin de clairement séparer les listes de pages uniques et celles d'articles éditoriaux. Par exemple, les listes d'articles de la page d'acceuil et de la page articles sont exemptes de pages uniques.

Tout n'est pas parfait en particulier pour les autorisations car il est toujours possible d'accéder à une page unique en saisissant l'url même si on est pas autorisé. C'est en effet l'autorisation de l'article qui se déroule. Pour combler ce manque il faudrait surcharger l'autorisation de l'article en testant l'id de rubrique mais cela produirait des effets de bords avec d'autres plugins comme accès restreint.
En fait, spécialiser un objet pour en créer un autre n'est pas une opération prévue dans l'api SPIP actuelle.

Autre remarque : lors de la désinstallation du plugin on supprime la colonne 'page' de la table spip_articles. On se retrouve avec des articles possédant un id_rubrique à -1. Est-ce bien de laisser cela ainsi ? Ne faudrait-il pas soit les supprimer soit les transférer dans une rubrique existante ?

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1<?php
2/**
3 * Fonction pour le pipeline, n'a rien a effectuer
4 *
5 * @return
6 */
7function pages_autoriser() {}
8
9
10/* ----------------------- AUTORISATIONS DE L'OBJET PAGE UNIQUE ----------------------- */
11
12/**
13 * Autorisation de créer un page unique.
14 *
15 * Cette page unique peut être créée soit à partir de rien
16 * soit en convertissant un article existant.
17 * Par défaut seuls les administrateurs complets sont autorisés.
18 *
19 * @param object $faire
20 * @param object $type
21 * @param object $id
22 * @param object $qui
23 * @param object $opt
24 * @return
25 */
26function autoriser_page_creer_dist($faire, $type, $id, $qui, $opt) {
27
28        // Conditions :
29        // - l'auteur connecté est un administrateur complet
30        $autoriser = pages_autorisation_defaut_dist($qui);
31
32        return $autoriser;
33}
34
35/**
36 * Autorisation de modifier une page unique existante.
37 *
38 * Cette page peut être modifiée soit au travers du formulaire d'édition
39 * soit en convertissant une page en article éditorial.
40 * Par défaut seuls les administrateurs complets sont autorisés.
41 *
42 * @param object $faire
43 * @param object $type
44 * @param object $id
45 * @param object $qui
46 * @param object $opt
47 * @return
48 */
49function autoriser_page_modifier_dist($faire, $type, $id, $qui, $opt) {
50
51        $autoriser = false;
52
53        // Conditions :
54        // - l'auteur connecté est un administrateur complet
55        if ($id_article = intval($id)) {
56                $autoriser = pages_autorisation_defaut_dist($qui);
57        }
58
59        return $autoriser;
60}
61
62
63/**
64 * Autorisation d'afficher une page unique.
65 *
66 * Par défaut seuls les administrateurs complets sont autorisés.
67 *
68 * @param object $faire
69 * @param object $type
70 * @param object $id
71 * @param object $qui
72 * @param object $opt
73 * @return
74 */
75function autoriser_page_voir_dist($faire, $type, $id, $qui, $opt) {
76
77        $autoriser = false;
78
79        // Conditions :
80        // - l'auteur connecté est un administrateur complet
81        if ($id_article = intval($id)) {
82                $autoriser = pages_autorisation_defaut_dist($qui);
83        }
84
85        return $autoriser;
86}
87
88
89/**
90 * Autorisation d'afficher la liste des pages uniques.
91 *
92 * Par défaut seuls les administrateurs complets sont autorisés.
93 *
94 * @param object $faire
95 * @param object $type
96 * @param object $id
97 * @param object $qui
98 * @param object $opt
99 * @return
100 */
101function autoriser_pages_voir_dist($faire, $type, $id, $qui, $opt) {
102
103        // Conditions :
104        // - l'auteur connecté est un administrateur complet
105        $autoriser = pages_autorisation_defaut_dist($qui);
106
107        return $autoriser;
108}
109
110
111/**
112 * Autorisation d'accéder à la liste des pages uniques.
113 *
114 * Cette autorisation coîncide avec l'autorisation pages_voir.
115 *
116 * @param object $faire
117 * @param object $type
118 * @param object $id
119 * @param object $qui
120 * @param object $opt
121 * @return
122 */
123function autoriser_pages_menu_dist($faire, $type, $id, $qui, $opt) {
124
125        // Conditions :
126        // - l'auteur connecté doit posséder l'autorisation pages_voir
127        $autoriser = autoriser('voir', '_pages', $id, $qui, $opt);
128
129        return $autoriser;
130}
131
132/**
133 * Autorisation d'afficher le bouton créer une page unique inclus
134 * dans la barre des outils rapides .
135 *
136 * Cette autorisation coîncide avec l'autorisation page_creer.
137 *
138 * @param object $faire
139 * @param object $type
140 * @param object $id
141 * @param object $qui
142 * @param object $opt
143 *
144*@return
145 */
146function autoriser_pagecreer_menu_dist($faire, $type, $id, $qui, $opt) {
147
148        // Conditions :
149        // - l'auteur connecté est un administrateur complet
150        $autoriser = autoriser('creer', 'page', $id, $qui, $opt);
151
152        return $autoriser;
153}
154
155
156function pages_autorisation_defaut_dist($qui) {
157        return (($qui['statut'] == '0minirezo')
158                        AND !$qui['restreint']);
159}
160
161?>
Note: See TracBrowser for help on using the repository browser.