Version 3 — Août 2016 — YannX
Le système d’autorisations de SPIP -tel que décrit dans Balises Bonux- est très structuré et relativement facile à utiliser et étendre, en particulier patr un modèle de fonctions pour les plugins ; cela représente un atout par rapport aux autres CMS...
Neanmoins, il peut présenter quelques inconvénients d’usage :
- par exemple il n’est accessible que par programmation php
- il n’est pas directement gérable par groupes ou zones
- il n’est pas facile d’affecter directement des droits ponctuels à un auteur
- l’usage du pipeline correspondant (voir ciautoriser : plugin « Pipeline pour autoriser »)
- .... vos autres reproches..
Cette page de carnet propose de regrouper pour discussion diverses approches.
- l’API Autoriser depuis SPIP 2
- le pipeline Autoriser et son code
- l’usage du pipeline dans programmer.spip
Proposé pour développer la compatibilité Gizeh, l’un des nombreux plugins d’Equipement : son analyse PDF et son implémentation actuelle
Une suggestion en-cours d’etude [1] analyse PDF et implémentation
Une réflexion déjà ancienne, à réactualiser par YannX !
L’idée, en bref : construire une table spip_acl
permettant de préempter les définitions par défaut de SPIP, en surchargeant le code d’autorisation par construction au vol d’une fonction à partir de l’exploration de la table.
- les champs de la table : correspondent essentiellement aux champs de la fonction autoriser ( $faire , $type , $id , array $qui , array $opts )
:
$qui
[2] (avec caractères génériques)Idée : utiliser le plugin ZAR (qui permet de définir des groupes d’auteurs en zone d’accès restreint) pour
Il faudrait aussi prévoir l’implémentation d’une hiérarchie des autorisations (par surcharge en programmation objet des fonctions autorisations)
L’implémentation serait alors d’ajouter en pré-exécution dans le code d’appel d’autoriser, l’appel à une fonction autoriser_acl( $faire , $type , $id , array $qui , array $opts )
qui renverrait uen autorisation extraite de la table ACL si elle existe , en plus de celle eventuellement trouvée par l’appel traditionnel (du core de SPIP ou définie par le plugin...) !