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, ouautoriser('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 (ounull
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 appelleraautoriser('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
.