Version 27 — Avril 2012 — YannX
La notion d’autoriation dans spip est documentée dans la doc « programmeurs » : Gestion d’autorisation. On peut aussi consulter la partie du CR des troglospip [TrogloSpip] Comment personnaliser l’espace privé avec le crayon dévolue à ce sujet.
Les fonction et balise [1] d’autorisations sont très utiles,... quand on sait quel paramètre donner dans les squelettes d’appel !
Cette page vise a préciser les rôles et valeurs possibles des paramètres d’appels des fonctions d’autorisation.
</blockquote>Les sources définissant les fonctions d’autorisation peuvent nous renseigner sur ces rôles et valeurs possibles :
- en SPIP v2 stable à ce jour, il faut examiner ./ecrire/inc/autoriser.php
, et ./ecrire/inc/utils.php
- pour les plugins, vous pourrez rechercher les lignes contenant le code : function autorise....
- l’autre solution consiste à en regarder les usages : cherchez les fichiers avec autoriser('
(pour commencer..)
Récapitulons les paramètres de la fonction :
function autoriser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL)
API pour les fonctions et balises d’autorisation :
Le retour d’un test d’autorisation est : vide si refusé, un espace pour valider (et afficher les parties conditionnelles !)
La première question porte sur la liste des actions controlées : le paramètre du faire est détaillé ci-dessous : ce doit être un mot obligatoire, unique, qui sera sélectionnera l’autorisation appliqué au type d’objet courant [2], sinon l’autorisation générique. :
Après récupération/valorisation contextuelle des valeurs par défaut, la fonction autoriser_dist($faire, $type=’’, $id=0, $qui = NULL, $opt = NULL) tente de générer et d’executer la meilleure autorisation déclarée (en surcharge, sinon en _dist ) sur le type, l’action, et l’objet (identifié si possible), sinon sur le type et l’action, sinon sur le type seul, ou sinon, enfin, sur l’action seule.
Dans l’ordre [3],
on va chercher
autoriser_type_faire[_dist],
autoriser_type[_dist],
autoriser_faire[_dist],
autoriser_defaut[_dist]
On trouve ainsi des autorisations génériques (se reporter à l’ordre de recherche des fonctions..) :
spip_auteurs_rubriques
en SPIP2)Ceci nous donne une liste des mots d’autorisations faire
pour récapituler des actions :
- dans utils :
previsualiser - debug
- dans autoriser :
verifier -
voir - modifier - publierdans - editermots
Evidement, l’utilisation des tests d’Autorisations ne peut concerner qu’un auteur identifié/connecté à SPIP, Un cas particulier concerne l’autorisation webmestre, la seule qui soit refusée aux administrateurs, et nous ne parlerons pas des auteurs désactivés [4] ; sinon les droits classiques sont exposés dans la plupart des articles sur le statut des utilisateurs, avec une mention pour le tableau récapitulatif de utiliser Spip.
[5].
Le tableau ci-dessous donne un premier aperçu des commandes possibles [6], à préciser en fonction de l’objet (et de la clé) éventuellement complété, sinon repris dans le contexte !
Statuts concernés | Visiteur | Rédacteur | Admin.restreint | Administrateur |
---|---|---|---|---|
mot de commande | 6forum | 1comite | 0minirezo | 0minirezo |
voir [7] | OK | OK | OK | OK |
voirrevisions [8] | OK | OK | OK | OK |
forums/abo [9] | - | - | OK | OK |
ecrire [10] | - | OK | OK | OK |
modifier [11] | - | - | OK | OK |
creerobjetdans [12] | - | - | OK | OK |
proposer [13] | - | - | OK | OK |
? [14] | - | - | OK | OK |
previsualiser [15]]] | - | - | OK | OK |
joindreDocument [16] | - | - | OK | OK |
modifier [17] | - | - | #ID | OK |
creerRubriqueDans [18] | - | - | #ID | OK |
publierDans [19] | - | - | #ID | OK |
? [20] | - | - | #ID | OK |
mot_creer [21] | - | - | - | OK |
mot_modifier [22] | - | - | - | OK |
groupemots_creer [23] | - | - | - | OK |
groupemots_modifier [24] | - | - | - | OK |
? [25] | - | - | - | OK |
? [26] | - | - | - | OK |
voirstats [27] | - | - | - | OK |
defaut [28] | - | - | - | OK |
configurer [29] | - | - | - | OK |
? [30] | - | - | - | OK |
webmestre [31] | - | - | OK | OK |
Nota Bene : les absences ci-dessus sont des autorisations non explictement résolues.
Nota.Bene : attention aux autorisations composées (contenant le caractère _
entre deux mots)...
- L’indication #ID fait référence à un test sur l’identificateur de l’objet (souvent rubrique).
- L’indication #CONFIG renvoie à une option de configuration générale du site.
P.S. il reste encore trois sujets d’explications à compléter...
- les documentations disponibles ne sont pas totalement claires sur le mode d’insertion des fonctions autoriser personnalisées (si ce n’est pas dans un plugin)
- traduire en autorisations le #SESSION{auteur}
ou #SESSION{statut}
(voir les tests sur le statut décrits dans #Session, à remplacer par #AUTORISER{ecrire}
, #AUTORISER{configurer}
, et #AUTORISER{webmestre})
.
- Il manque ci-dessus la solution pour identifier facilement les admins restreints (quel est le paramétrage de leur autorisation), récupérer plus facilement leurs rubriques autorisées => ressortir le $qui de autoriser_dist ?
Il est possible d’utiliser le tableau correspondant à #SESSION{restreint}
, pour savoir si l’on est connecté à une rubrique
en Administrateur Restreint :
[Admin Restreint à (#SESSION{restreint}|table_valeur{#ID_RUBRIQUE}) #TITRE <br>]
Nota.Bene : suite à une « feature » de SPIP, cela gère aussi les Admins.Restreints devenus Rédacteurs....
et restreindre pareillement des auteurs redacteurs et pas seulement des admins, à une liste de rubriques (mais en SPIP 3, la table change de formats....) : à noter (Spip 2.1.12) la conversion d’un Admin restreint en redacteur ne supprime pas les restrictions dans la table auteurs_rubriques => à tester pour usage en autorisations..
Quand on surcharge des autorisations, il ne faut pas oublier de laisser la porte ouverte aux autorisés de plus haut niveau....