La librairie « autoriser »

SPIP dispose d’une fonction extensible autoriser() permettant de vérifier des autorisations. Cette fonction admet 5 arguments. Seul le premier est indispensable, les autres étant optionnels.

autoriser($faire, $type, $id, $qui, $opt);

La fonction renvoie true ou false en fonction de l’autorisation demandée et de l’auteur connecté (ou l’auteur demandé). Voici à quoi correspondent les différents arguments :

  • $faire correspond à l’action demandée. Par exemple « modifier » ou « voir »,
  • $type sert à donner généralement le type d’objet, par exemple « auteur » ou « article », Si toutefois $type commence par un caractère ’_’ (underscore), alors il ne s’agit pas un nom d’objet éditorial et la fonction objet_type ne lui sera pas appliquée.
  • $id sert à donner l’identifiant de l’objet demandé, par exemple « 8 »,
  • $qui permet de demander une autorisation pour un auteur particulier. Non renseigné, ce sera l’auteur connecté. On peut donner comme argument à $qui un id_auteur. Cette variable sera remplie avec toutes les informations, sous forme de tableau, concernant l’auteur désigné,
  • $opt est un tableau d’option, généralement vide. Lorsqu’une autorisation nécessite de passer des arguments supplémentaires, ils sont mis dans ce tableau.

Dans $qui on trouve notamment le statut de l’auteur. Ce statut peut avoir les valeurs suivantes :

Administrateur Rédacteur Visiteur Poubelle
0minirezo 1comite 6forum 5poubelle

Attention :
 Pour le choix de la fonction d’autorisation spécialisée à appeler, les underscore sont supprimés à l’intérieur de $type. Ainsi, pour le type d’objet livre_art c’est une fonction autoriser_livreart qui pourra être appelée.
 Si toutefois le $type commence par un caractère ’_’ (underscore), alors il ne s’agit pas un nom d’objet éditorial et la fonction objet_type ne lui sera pas appliquée.

Exemple

if (autoriser('modifier','article',$id_article)) {
	// ... actions
}

// 'inscription' n'est pas un objet, mais un type d'action sur les auteurs
if (autoriser('relancer', '_inscription')) {
    // ... actions
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 08/10/24

Traductions : English, français, Nederlands