Version 16 — Mars 2012 — Richie
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 !
Le premier paramètre est un mot obligatoire, unique, qui sera sélectionnera l’autorisation appliqué au type d’objet courant [2], sinon l’autorisation générique controlée...
On trouve aussi des autorisations génériques (se reporter à l’ordre de recherche des fonctions..) :
Dans l'ordre on va chercher autoriser_type_faire[_dist], autoriser_type[_dist],
autoriser_faire[_dist], autoriser_defaut[_dist]
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 [3] ; 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.
[Rappelons que la (…)" id="nh4">4].
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 [ ( peut" id="nh5">5] )= voir]] | OK | OK | OK | OK | ||||||||||||||||||
forums/abo [6] | - | OK | OK | OK | ||||||||||||||||||
modifier | - | - | OK | OK | ||||||||||||||||||
[7] | - | - | OK | OK | ||||||||||||||||||
[8] | - | - | OK | OK | ||||||||||||||||||
previsualiser [9] previsualiser]]]] | - | - | OK | OK | ||||||||||||||||||
[10] | - | - | OK | OK | ||||||||||||||||||
[11] | - | - | #ID | OK | ||||||||||||||||||
creerRubriqueDans [12] | - | - | #ID | OK | ||||||||||||||||||
publierDans [13] | - | - | #ID | OK | ||||||||||||||||||
[14] | - | - | #ID | OK | ||||||||||||||||||
[15] | - | - | - | OK | ||||||||||||||||||
[16] | - | - | - | OK | ||||||||||||||||||
[17] | - | - | - | OK | ||||||||||||||||||
defaut [18] | - | - | - | OK | ||||||||||||||||||
configurer [ (…)" id="nh19">19] site]] | - | - | - | OK | ||||||||||||||||||
[20] | - | - | - | OK | ||||||||||||||||||
webmestre [21] | - | - | OK | OK | - | - | OK | OK | - | - | OK | OK | - | - | OK | OK |
- 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....