Voici une tentative de résumer ce que pourrait être Accès Restreint V2 suite aux discussions sur la zone.
Le principe général serait de remplacer les zones actuelles par des profils et des verrous.
Comment cela se passerait-il donc ?
On pose des verrous sur différentes rubriques. Pour avoir accès à une rubrique et son contenu, il faut pouvoir ouvrir tous les verrous présents depuis la racine du site.
Première étape, on définit, pour l'ensemble du site, séparément pour l'espace privé et pour l'espace public, les différents verrous.
Sur la page principale de gestion, sous la liste des profils, il y aurait donc un premier affichage de l'arborescence du site avec les petits blocs dépliants qui vont et à coté de chaque rubrique un bouton permettant de poser un "verrou public".
Puis les restrictions d'accès dans l'espace privé avec de nouveau l'arborescence du site et à côté de chaque rubrique un bouton "Poser un verrou privé".
Pour mieux se repérer, les rubriques avec un verrou seraient surlignées en couleur et les rubriques rendues inaccessibles par la pose d'un verrou surlignées en gris.
Dans un second temps, on créé des profils auxquels on attribue un titre et un descriptif. A chaque profil on attribue des clés pour ouvrir les verrous existants. Encore une fois, on attribue d'une part des clés publiques et d'autre part des clés privées. A chaque fois on affiche l'arborescence du site avec une case à cocher ou à décocher seulement devant les rubriques sur lesquelles un verrou a été posé. Pour faciliter la lecture, les rubriques restreintes accessibles sont surlignées en couleur et les rubriques inaccessibles sont surlignées en gris.
Enfin on associe aux auteurs un ou plusieurs profils à l'aide d'un formulaire d'ajout sur la fiche d'un auteur.
Bien sur, pour que l'on s'y retrouve facilement, sur la page générale de gestion des profils (celle sur laquelle on définit les verrous) à coté de chaque verrou on affiche le nom des profils qui disposent d'une clé. Si aucun profil ne dispose d'une clé, alors on affiche un bouton "supprimer le verrou". Et oui, avant de supprimer un verrou, il faut déjà récupérer les clés.
De plus, sur la page de gestion d'un profil, il faut penser à afficher l'ensemble des auteurs associés à un profil et la possibilité de rajouter ou supprimer des auteurs directement depuis cette page.
Techniquement, on reste avec trois tables : spip_profils, spip_profils_rubriques, spip_profils_auteurs.
La définition des verrous se fait directement dans spip_profils_rubriques en spécifiant id_profil=0.
Par ailleurs, cette table doit également comporter un champs type qui pourra prendre la valeur 'publique' ou 'privé'. En utilisant un champs texte, on se laisse donc la possibilité d'étendre ce fonctionnement à d'autres types de droits. Par exemple, le droit de publier dans une rubrique.
APPARTENIR A UN PROFIL
Outre le fait d'associer un auteur à un profil, il faudrait par la suite permette d'associer un profil à des auteurs en fonction du statut des auteurs (tous les rédacteurs ont accès à ce profil par exemple). De plus, pouvoir gérer des sur-profils. Par exemple dire que les membres du profil A sont de fait membres du profil B.
On reproduira ainsi certaines des fonctionnalités de accès_restreint_par_groupes. Il faudra aussi s'occuper de l'affichage afin de ne pas s'y perdre. Par exemple, sur la fiche d'un auteur voir les profils auxquels il est associé en précisant si c'est direct, par son statut ou par héritage d'autres profils.
De plus, si les mots-clés sont activés sur des auteurs, on peut aussi envisager que si un mot-clé MC est attribué à un auteur A alors le profil P est aussi associé à A.
UN OU DEUX PLUGINS
La notion de profils rejoint d'autres discussions sur la gestion des auteurs. En effet, cela revient à une manière de définir des groupes d'auteurs qui peuvent intéressés d'autres plugins.
Auquel cas, ils pourraient être intéressant de pouvoir disposer des profils sans user de la restriction d'accès. On peut alors envisager un développement en deux plugins : un plugin profils d'une part et accès restreint d'autre part qui nécessiterait profils pour fonctionner. A l'aide des pipelines adéquats dans profils, accès restreint viendrait ajouter la définition des verrous sur la page profils_tous et la définition des clés d'accès sur profils_edit et ajouterait la table spip_profils_rubriques.
On laisserait ainsi la possibilité à d'autres plugins de venir également se brancher sur les profils et la possibilité d'installer alors profils sans installer accès_restreint.
Si ce plan de travail convient (il n'est pas définitif et il est bien sur ouvert à la discussion), il faudrait alors recoder tout ça en partant de accès restreint mais dans une nouvelle branche de dev afin de ne pas casse le plugin existant.
Par ailleurs, une fois fonctionnel, il faudra prévoir une fonction de mise à jour permettant de récupérer les informations de l'ancienne version et de créer les verrous et profils correspondants afin de permettre une mise à jour facilitée.
Voili voilou pour le moment,
Joseph