Version 15 — 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 :
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 [1], 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]
La première question porte sur la liste des actions controlées : le paramètre du {{faire}} !
{{{Les codes d'autorisation de {$faire} }}}
Le premier paramètre est un mot obligatoire, unique
On trouve aussi des autorisations génériques (se reporter à l'ordre de recherche des fonctions..</code >
) :
-** autoriser_{{webmestre}}
-** autoriser_defaut = autoriser_{{configurer}} : les {Admins} non restreints
-** autoriser_{{ecrire}} : pour autoriser l'accès à l'espace privé
-** autoriser_{{previsualise}}r
-** autoriser_dater
-** autoriser_ok et autoriser_niet
-** autoriser_{{voir}} (dépend du $type )
-* pour le traitement des {{rubriques}}
-** autoriser_{rubrique}_{{publierdans}} = autoriser_rubrique_modifier
-** autoriser_{rubrique}_{{creerRubriquedans}} autoriser_{rubrique}_{{creerrubriquedans}}
-** autoriser_rubrique_{{editermots}}
-* pour le traitement des {{articles}}
-** autoriser_{article}_{{modifier}} :=autoriser_rubrique_publierdans
-** autoriser_article_{{editermots}} = autoriser_rubrique_editermots
-* ensuite la plupart des autorisations vont dépendre aussi du $type
-** autoriser_{{voir}} (dépend du $type )
-* pour les {{auteurs}}, on trouvera d'autres fonctionnalités
-** autoriser_auteur_{{modifier}} : prend divers cas...
-** {avec une fonction} liste_rubriques_auteur (gestion de <code>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 [2] ; 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 table des statuts est codée en ecrire/inc_version.php[375]
, comme celle des états des articles, d’ailleurs.]].
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 [3] | OK | OK | OK | OK |
forums/abo [4] | - | OK | OK | OK |
modifier | - | - | OK | OK |
[5] | - | - | OK | OK |
[6] | - | - | OK | OK |
previsualiser [7] | - | - | OK | OK |
[8] | - | - | OK | OK |
[9] | - | - | #ID | OK |
creerRubriqueDans [ [[crée" id="nh10">10] | - | - | #ID | OK |
[11] | - | - | #ID | OK |
[12] | - | - | - | OK |
[13] | - | - | - | OK |
[14] | - | - | - | OK |
[15] | - | - | - | OK |
[16] | - | - | - | OK |
webmestre [17] | - | - | OK | OK |
- | - | OK | OK | |
- | - | OK | OK | |
- | - | OK | OK |
- L’indication #ID fait référence à un test sur l’identificateur de 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....