Le pipeline « autoriser » est particulier. Il permet simplement de charger des fonctions d’autorisations au tout premier appel de la fonction
autoriser()
. Ce pipeline ne transmet rien et ne reçoit rien.
Grâce à lui, un plugin peut déclarer des autorisations spécifiques, regroupées dans un fichier « prefixePlugin_autorisations.php » et les déclarer, dans
plugin.xml
comme ceci :
<pipeline>
<nom>autoriser</nom>
<inclure>prefixePlugin_autorisations.php</inclure>
</pipeline>
Outre les fonctions d’autorisations, le fichier doit contenir la fonction appelée par tous les pipelines (« prefixePlugin_nomDuPipeline() ») mais elle n’a rien a effectuer. Un exemple :
function prefixePlugin_autoriser(){}
{{Attention !}} l’exemple donné ci-dessous comporte un piège : le {{forum}} dans le nom des fonctions d’autorisation est le {{type}} d’objet concerné. Il se trouve que le {{type forum}} s’appelle pareil que le {{préfixe}} du plugin forum, mais c’est un cas particulier. Utilisez le {{type}} !
[1]
On peut aussi avoir simplement besoin de
Donner une autorisation exceptionnelle.
Exemple
Le plugin « forum » déclare quelques autorisations. Son fichier
plugin.xml
contient :
<pipeline>
<nom>autoriser</nom>
<inclure>forum_autoriser.php</inclure>
</pipeline>
Et le fichier appelé, « forum_autoriser.php » contient :
// declarer la fonction du pipeline
function forum_autoriser(){}
function autoriser_forum_interne_suivi_bouton_dist($faire, $type, $id, $qui, $opt) {
return true;
}
function autoriser_forum_reactions_bouton_dist(($faire, $type, $id, $qui, $opt) {
return autoriser('publierdans', 'rubrique', _request('id_rubrique'));
}
// Moderer le forum ?
// = modifier l'objet correspondant (si forum attache a un objet)
// = droits par defaut sinon (admin complet pour moderation complete)
function autoriser_modererforum_dist($faire, $type, $id, $qui, $opt) {
return autoriser('modifier', $type, $id, $qui, $opt);
}
// Modifier un forum ? jamais !
function autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt) {
return false;
}
...