Version 18 — Mars 2012 — YannX
Pour cela, une solution est d’examiner les sources définissant les fonctions d’autorisation :
- 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 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 une fonction generique 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, sion en _dist ) sur le type et l’action, sinon sur le type seul, ou sinon 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)On commence une récapitulation des actions :
- dans utils :
A partir de là, cela devient plus clair : on va pouvoir commencer à jouer avec les autorisations ;
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, à 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 [6] | OK | OK | OK | OK |
voirrevisions [7] | OK | OK | OK | OK |
forums/abo [8] | - | - | OK | OK |
ecrire [9] | - | OK | OK | OK |
modifier [10] | - | - | OK | OK |
creerobjetdans [11] | - | - | OK | OK |
proposer [12] | - | - | OK | OK |
? [13] | - | - | OK | OK |
previsualiser [14]]] | - | - | OK | OK |
joindreDocument [15] | - | - | OK | OK |
modifier [16] | - | - | #ID | OK |
creerRubriqueDans [17] | - | - | #ID | OK |
publierDans [18] | - | - | #ID | OK |
? [19] | - | - | #ID | OK |
mot_creer [20] | - | - | - | OK |
mot_modifier [21] | - | - | - | OK |
groupemots_creer [22] | - | - | - | OK |
groupemots_modifier [23] | - | - | - | OK |
? [24] | - | - | - | OK |
? [25] | - | - | - | OK |
voirstats [26] | - | - | - | OK |
defaut [27] | - | - | - | OK |
configurer [28] | - | - | - | OK |
? [29] | - | - | - | OK |
webmestre [30] | - | - | OK | OK |
Nota.Bene : attention aux autorisations composées (contenant le caratè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 optioon de configuration générale du site.
La chaine de recherche des autorisations :
mais il reste encore deux sujets à compléter...
- traduite en autorisations le #SESSION{auteur}
ou #SESSION{statut}
- 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 ?
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....