Idée : selon l’usage qu’on a de spip, on cherche (deux extrêmes) à a) avoir une communauté de gens tous égaux qui travaillent ensemble ou à b) tout contrôler et éviter qu’une info de trop n’arrive là où elle ne doit pas.
Sans porter de jugement de valeur trop rapide sur ces deux usages (qui ont sans doute chacun leur pertinence et leur légitimité), on peut constater que le développements de certaines fonctionnalités ou leur accès à tous pose des problèmes selon le point de vue d’où on se place.
Bien sûr, dans l’usage a), il suffit de mettre tout le monde en accès administrateur. C’est quand même assez risqué si on commence à avoir du monde. C’est aussi assez peu nuancé.
D’où l’idée de donner la possibilité au webmestre de définir le degré d’ouverture de son site, par exemple sur trois niveaux :
Niveau 1, égalitariste, limite wiki Utilisation-type : un réseau informel, une rédaction en ligne,
Niveau 2, webzine bon teint Utilisation-type : une assoc, un gros webzine
Niveau 3, accent sur la sécurité Utilisation-type : une administration, une entreprise, un site web soumis à des contraintes éditoriales fortes (n’importe quel site "officiel" en fait)
NicolasHoizey : Je mettrais plutôt, au minimum, pour les rôles avec des droits forts :
l’administrateur dans un rôle purement technique (configuration),
le(s) webmestre dans le rôle de publieur, responsable de ce qui est en ligne
le(s) rédacteur en chef dans son rôle de valideur des contenus proposés
Mais l’idéal serait un système totalement configurable avec :
des rôles bien définis
des groupes, avec des rôles affectés
des utilisateurs, regroupés dans des groupes (un utilisateur pouvant être dans plusieurs groupes) et donc avec des rôles affectés
(PiiF) C’est pas fait dans Agora ça ?
En fait, à mon avis, si on part vers ça, il faut bien distinguer 2 parties :
les droits et les différentes «zones» (chaque rubrique ou secteur, chaque groupe de mots clés, ...)
les utilisateurs, groupes, roles ...
On trouve ce principe dans quasiment tous les cms un peu costauds et autres outils plus ou moins «groupware».
Techniquement parlant, on a donc deux choses :
une gestion des utilisateurs dans un module isolé avec une api minimale et donc facilement remplaçable
une gestion des droits et zones fortement liée à spip, mais également situé dans un module spécifique pour pouvoir la compléter (si on ajoute une contrib de sondages, il faut qu’ils aient leurs droits associés)
À chaque fois qu’un bout de code correspond à une action il faut alors le précéder d’un «est-ce que l’utilisateur courant à le droit de faire cette action sur cette zone ?». C’est au code spip de savoir identifier le zone et le droit associé à cette action, le module de gestion des utilisateurs ne faisant qu’un «select where ce droit dans un groupe et l’utilisateur courant dans ce groupe»