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

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;
}
...

Auteur Matthieu Marcillaud Publié le : Mis à jour : 01/02/10

Traductions : English, français