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(){}
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;
}
...