Version 17 — 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 !
La première question porte sur la liste des actions controlées :
le Le premier 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. 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]
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..) :
</code >
-** autoriser_webmestre
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 [) (…)" id="nh7">7] | OK | OK | OK | OK |
| forums/abo [pas (…)" id="nh8">8] pas de mot-clé identifié | - | - | OK | OK |
| ecrire [9] | - | OK | OK | OK |
| modifier [10] | - | OK | OK | OK |
| modifier | - | - | OK | OK |
| creerobjetdans [ [[ré" id="nh11">11] | - | - | OK | OK |
| proposer [ (…)" id="nh12">12] contenus]] | - | - | OK | OK |
| ? | - | - | OK | OK |
| [13]| - | - | OK | OK |
| previsualiser [14]]]| - | - | OK | OK |
| joindreDocument [ [[aj" id="nh15">15]| - | - | OK | OK |
| modifier [ (…)" id="nh16">16]| - | - | #ID | OK |
| creerRubriqueDans [17]| - | - | #ID | OK |
|publierDans [18] | - | - | #ID | OK |
| ? | - | - | #ID | OK |
| [19]| - | - | #ID | OK |
| mot_creer [creer [[creer" id="nh20">20]| - | - | - | OK |
| mot_modifier [21] | - | - | - | OK |
| groupemots_creer [22] | - | - | - | OK |
| groupemots_modifier [23] | - | - | - | OK |
| ? | - | - | - | OK |
| [24]| - | - | - | OK |
| ? | - | - | - | OK |
| [25]| - | - | - | OK |
| voirstats [26] | - | - | - | OK |
| defaut [27] | - | - | - | OK |
| configurer [28] | - | - | - | OK |
| ? | - | - | - | 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....