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 : 12/03/23

Traductions : English, français