autoriser Vérifier une autorisation

SPIP >= 2.0

Description

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

La fonction accepte 5 arguments dont seul le premier est obligatoire.

La vérification d’une autorisation se fait par un appel de la forme :

include_spip('inc/autoriser');
if (autoriser('modifier', 'article', $id_article)) {
...
}

Liste des paramètres

  • $faire est une chaîne qui désigne l’action soumise à autorisation. C’est en règle générale un verbe simple (modifier, creer, supprimer, voir, configurer...), parfois associé à un contexte (les mots sont alors collés : changerlangue, publierdans...).
    Il y a quelques exceptions où le $faire n’est pas un verbe et s’utilise sans aucun autre argument (autoriser('webmestre') par exemple, ou autoriser('ecrire') —qui désigne ici l’espace d’administration et non l’action—).
  • $type est une chaîne qui désigne sur quoi porte l’action. C’est en général le type d’un objet éditorial (article, rubrique, mot, groupe-mots, ...).
  • $id désigne l’id (la clé primaire) de l’objet sur lequel porte l’action. $id est en général un nombre entier, mais peut être une chaîne si cela correspond à la clé primaire de la table SQL concernée.
  • $qui désigne l’auteur (au sens SPIP) qui va faire l’action. Si il n’est pas fourni (ou null dans l’appel de la fonction autoriser, c’est implicitement l’auteur connecté qui est pris en compte. Sinon $qui peut être l’id_auteur d’un auteur dont on veut vérifier les droits, ou un tableau associatif qui décrit l’auteur (tableau qui contient alors les champs de la table spip_auteurs pour l’auteur concerné)
  • $opt est un tableau associatif de données supplémentaires contextuelles concernant l’action qui sont parfois utilisées par l’autorisation. Par exemple lorsqu’on veut modifier/publier un article, on appellera autoriser('instituer', 'article', $id_article, null, array('statut' => 'publie'))

Valeurs de retour

La fonction autoriser retourne « true » ou « false » en fonction des droits de l’auteur à faire l’action demandée.

Historique

SPIP 3.0

À partir de SPIP 3.0 le paramètre $type est présumé correspondre à un objet, et est normalisé lors de l’appel : vérification qu’il correspond bien à un type d’objet et sinon suppression du « s » final. Cela permet d’assurer qu’on appellera bien la bonne fonction d’autorisation même si on utilise un synonyme du $type (syndic au lieu de site par exemple, ou groupes_mot au lieu de groupe_mots qui est une exception de nommage).

Il est cependant possible d’échapper à cette normalisation en préfixant le $type par un ’_’ (souligné) dans l’appel à autoriser().

Dans tous les cas, tous les autres caractères ’_’ sont retirés du $type|

SPIP 2.0

Introduction de la fonction.

Dans les versions antérieures à SPIP 3.0 il convient de toujours faire très attention à bien utiliser le nom de l’objet $type sans erreur, car sinon l’autorisation par défaut sera appelée ce qui peut conduire à une erreur d’autorisation plus ou moins grave selon le cas.

Notes

Dans un squelette, la vérification d’une autorisation se fait par la balise #AUTORISER.

, par cedric