Version 21 — 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 le code : function
</ 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)
Récapitulons les paramètres de la fonction :
< code > function autoriser_dist($faire , $type =’’, $id=0 , $qui = NULL , $opt = NULL)</code >
API pour les fonctions et balises 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, sinon sion 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 On commence une liste récapitulation des mots d’autorisations < code>faire</code > pour récapituler des actions :
- dans utils 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 [6]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 [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. | - | - | 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 option de configuration générale du site.
P.S. _ mais il reste encore trois deux 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->http://www.spip.net/ecrire/?exec=articles&id_article=3979], à remplacer par #AUTORISER{ecrire}
, #AUTORISER{configurer}
, et #AUTORISER{webmestre})
.
- traduire en autorisations le < code>#SESSIONauteur</code > ou < code>#SESSIONstatut</code >
- 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 ?
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....