Créer ou surcharger des autorisations

Pour créer une autorisation, il suffit de créer les fonctions adéquates.

function autoriser_documentation_troller_dist($faire, $type, $id, $qui, $opt) {
	return false; // aucun troll permis ! non mais !
}

Déclarer cette fonction permet d’utiliser la fonction autoriser('troller','documentation') ou la balise #AUTORISER{troller, documentation}.

Nouvelles fonctions, mais pas n’importe où !

La fonction autoriser(), à son premier appel, charge un pipeline du même nom. Cet appel du pipeline « autoriser » permet de charger les fichiers d’autorisations pour un dossier squelettes ou un plugin.

Alias des objets

SPIP traite automatiquement le paramètre ’type’ de autoriser par la fonction objet_type qui traite les alias de noms d’objets ou les cas particuliers où le nom de la table n’est pas terminé par un ’s’. Lorsqu’on veut éviter cela, on peut préfixer le type par un underscore ’_’.

Exemple

Dans un squelette :
Dans le fichier config/mes_options.php on ajoute l’appel d’une fonction pour nos autorisations :

<?php
$GLOBALS['spip_pipeline']['autoriser'] .= "|mes_autorisations";
 
function mes_autorisations(){
	include_spip('inc/mes_autorisations');
}
?>

Ainsi lorsque le pipeline autoriser est appelé, il charge le fichier inc/mes_autorisations.php. On peut donc créer ce dossier et le fichier, qui contient les fonctions d’autorisations souhaitées, dans son dossier squelettes/.

Dans un plugin :
Pour un plugin, presque de la même façon, il faut déclarer l’utilisation du pipeline dans le plugin.xml :

<pipeline>
	<nom>autoriser</nom>
	<inclure>inc/prefixePlugin_autoriser.php</inclure>
</pipeline>

Et créer le fichier en question en ajoutant absolument, dans le fichier que le pipeline appelle, la fonction prefixePlugin_autoriser().

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
 
// fonction pour le pipeline, n'a rien a effectuer
function prefixePlugin_autoriser(){}
 
// declarations d'autorisations
function autoriser_documentation_troller_dist($faire, $type, $id, $qui, $opt) {
	return false; // aucun troll permis ! non mais !
}
?>

Auteur Matthieu Marcillaud Publié le : Mis à jour : 14/11/20

Traductions : English, français, Nederlands