autoriser

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.
pipeline('autoriser');
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;
}
...

Notes

[1Voir le code source de inc/autoriser.php.

Auteur Matthieu Marcillaud Publié le : Mis à jour : 19/06/15

Traductions : English, français