[SPIP Zone] Accès restreint : tentative de récapitulatif des discussions des derniers jours.

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

Bonjour

Je vois que l'insomnie te réussit plutôt.
Bon j'ai peut être zappé un point ou 2 en raison de la densité des échanges.

Tu parles de faire 2 types de verrous : partie privée, partie publique.
Je pense que c'est peut être un peu trop.

Ne pourrait t'on pas simplifier en rajoutant la notion de droit. Avec
le badge qui me permet d'entrer : "qu'ai je le droit de faire ?".

On pourrait avoir :
-lire
-écrire
-modifier
-prévisualiser

A l'heure actuelle la frontière privée/publique devient de plus en
plus flou, par exemple lorsqu'on utilise crayons. Il me semble que
prévisualiser est le seul point spécifique à privé et et lire pour
public.
Je ne parle pas des droits d'administration qui a priori sortent du
champ d'action du sujet.

Tel que résumé dans le dernier post, je trouve que la notion de
restriction est la plus pertinente. Ainsi on limite les effets de bord
lors des suppression/modification d'un profil.
Si je ne m'abuse c'est plutôt l'approche utilisée sur les OS tel win
NTx tandis que sous *nux la notion de profil multiple est un peu plus
tordue.

Dans les profils une notion qu'on pourrait envisager c'est aussi la
notion de temps, et d'adresse IP. Cette idée a été apporté par fil.
Dans certains cas, il pourrait être intéressant de limiter les heures d'accès.
Si on garde l'idée des badges, sur un site il est rare d'autoriser les
accès la nuit ou le we.
L'approche IP ce serait dans le cas de robot par exemple, ou pour
l'admin. Pour éviter de se logguer à tout bout de champ pour les
maintenances, ... Cela peut être intéressant aussi dans le cadre d'un
intranet.

Mes 2 centimes

Km
------------
-----
http://km.azerttyu.net
cam.lafit@azerttyu.net

J'ajoute qu'on doit pouvoir affecter un profil à un visiteur (pas
forcément référencé comme auteur) lorsqu'il arrive sur le site (pour
un accès par IP, par exemple)

-- Fil

Les dernières synthèses vont vraiment dans le bon sens selon moi, bravo !

J'ajoute qu'on doit pouvoir affecter un profil à un visiteur (pas
forcément référencé comme auteur) lorsqu'il arrive sur le site (pour
un accès par IP, par exemple)

Et puisqu'on en est à l'expression des besoins, le bonheur ultime serait que ce soit utilisable avec l'authentification par LDAP, et qu'on puisse piocher dans ce même LDAP les groupes de l'utilisateur... :wink:

-Nicolas

--
Nicolas "Brush" HOIZEY
Clever Age : http://www.clever-age.com/
Gastero Prod : http://www.gasteroprod.com/
Photos : http://www.flickr.com/gp/38608514@N00/M1c002

cam.lafit-LQsE5k9MKYjk1uMJSBkQmQ@public.gmane.org a écrit :

Bonjour

Je vois que l'insomnie te réussit plutôt.
Bon j'ai peut être zappé un point ou 2 en raison de la densité des échanges.

Tu parles de faire 2 types de verrous : partie privée, partie publique.
Je pense que c'est peut être un peu trop.

Ne pourrait t'on pas simplifier en rajoutant la notion de droit. Avec
le badge qui me permet d'entrer : "qu'ai je le droit de faire ?".

On pourrait avoir :
-lire
-écrire
-modifier
-prévisualiser

A l'heure actuelle la frontière privée/publique devient de plus en
plus flou, par exemple lorsqu'on utilise crayons. Il me semble que
prévisualiser est le seul point spécifique à privé et et lire pour
public.
Je ne parle pas des droits d'administration qui a priori sortent du
champ d'action du sujet.

Tel que résumé dans le dernier post, je trouve que la notion de
restriction est la plus pertinente. Ainsi on limite les effets de bord
lors des suppression/modification d'un profil.
Si je ne m'abuse c'est plutôt l'approche utilisée sur les OS tel win
NTx tandis que sous *nux la notion de profil multiple est un peu plus
tordue.

Par défaut, les individus ont accès à tout dans l'espace public, et les radacteurs et admins ont accès à tout dans l'espace privé.

Le principe des verrous est de commencer par spécifier là où on supprimer des droits d'accès. Un verrou public cela signifie, je supprime l'accès dans l'espace public, c'est à dire le droit de voir, à certaines rubriques. Un verrou privé, c'est je supprime le droit de voir dans l'espace privé. Puis dans un profil, je donne à celui-ci le droit de voir certaines des rubriques non visibles par défaut.

La distinction public/privé est donc une distinction en terme de droits et seulement en terme de droits.

Dans les profils une notion qu'on pourrait envisager c'est aussi la
notion de temps, et d'adresse IP. Cette idée a été apporté par fil.
Dans certains cas, il pourrait être intéressant de limiter les heures d'accès.
Si on garde l'idée des badges, sur un site il est rare d'autoriser les
accès la nuit ou le we.
L'approche IP ce serait dans le cas de robot par exemple, ou pour
l'admin. Pour éviter de se logguer à tout bout de champ pour les
maintenances, ... Cela peut être intéressant aussi dans le cadre d'un
intranet.

Mes 2 centimes

Km
------------
-----
http://km.azerttyu.net
cam.lafit-LQsE5k9MKYjk1uMJSBkQmQ@public.gmane.org

Nicolas Hoizey a écrit :

Les dernières synthèses vont vraiment dans le bon sens selon moi, bravo !

J'ajoute qu'on doit pouvoir affecter un profil à un visiteur (pas
forcément référencé comme auteur) lorsqu'il arrive sur le site (pour
un accès par IP, par exemple)

Et puisqu'on en est à l'expression des besoins, le bonheur ultime serait que ce soit utilisable avec l'authentification par LDAP, et qu'on puisse piocher dans ce même LDAP les groupes de l'utilisateur... :wink:

-Nicolas

D'où la proposition de séparer en deux plugins. Profils se charge de définir qui a tel profil.
Accès restreint s'occupe de restrictions d'accès et demande à profil de lui fournir les profils de la personne en cours.

On peut donc envisager par la suite que si l'on se connecte avec une adresse IP particulière, tel ou tel profil sera attribué à l'individu (avec éventuellement prise en compte de l'heure). (voir si c'est une fonctionnalité à intégrer à profils, ou s'il vaut mieux un plugin additionnel pour ajouter cette fonctionnalité avec les pipelines adéquats dans profils).

Grosso modo, profils doit fournir une fonction donnant la liste des profils de la personne en train de naviguer. Ensuite à d'autres plugins, comme accès restreint, d'utiliser cette fonction pour leurs besoins.

Par ailleurs, il faudrait aussi que profils ait une fonction donnant la liste des individus membres d'un profil, par exemple pour permettre à SPIP-Listes d'envoyer un mail. Là par contre, il faut bien distinguer les membres d'un profils (c'est-à-dire les auteurs associés aux profils pour lesquels on dispose d'un mail) des personnes reconnues par IP pour lesquelles on ne dispose pas d'autre information (ni nom ni mail).

cam.lafit-LQsE5k9MKYjk1uMJSBkQmQ@public.gmane.org a écrit :

On pourrait avoir :
-lire
-écrire
-modifier
-prévisualiser

Pour le moment, acces_restreint doit arriver à gérer correctement les droits de voir des éléments dans l'espace public et dans l'espace privé sur des rubriques que l'on retire du droit par défaut.
Avec cette proposition de refonte où on abandonne les zones, on peut envisager d'étendre à d'autres types de droits. Par exemple, aujourd'hui un rédacteur a le droit de proposer un article là où il le souhaite. On peut envisager d'étendre accès restreint pour pouvoir dire que dans certaines rubriques, pour avoir le droit de proposer un article, il faut avoir le profil adéquat.
La V2 de acces restreint est donc envisagée comme extensible. Acces_restreint serait donc un plugin qui permet de retirer certaines rubriques du système de droits par défaut puis de définir les profils nécessaires pour exercer ces droits sur les rubriques en question.

A l'heure actuelle la frontière privée/publique devient de plus en
plus flou, par exemple lorsqu'on utilise crayons. Il me semble que
prévisualiser est le seul point spécifique à privé et et lire pour
public.
Je ne parle pas des droits d'administration qui a priori sortent du
champ d'action du sujet.

Joseph a écrit :

La V2 de acces restreint est donc envisagée comme extensible. Acces_restreint serait donc un plugin qui permet de retirer certaines rubriques du système de droits par défaut puis de définir les profils nécessaires pour exercer ces droits sur les rubriques en question.

Dans cette lignée, il faudrait voir comment faire cohabiter autorité et accès restreint, autorité pour la définition des droits par défauts, accès restreint pour une définition de droits spécifiques sur certaines rubriques.

On 6/25/07, Joseph <joseph@larmarange.net> wrote:

Voici une tentative de résumer ce que pourrait être Accès Restreint V2
suite aux discussions sur la zone.
[...]

Je suis assez d'accord avec tout ce qui s'est dit, du point de vue
fonctionnalités et interface.

Pour la partie technique (nombre de plugins, pipelines, tout ça), je
n'ai pas vraiment d'avis.
C'est vrai que si les profils peuvent servir à un autre type de plugin
d'accès restreint (par mot-clé plutôt que par arborescence), ça serait
intéressant, mais je n'ai aucune idée de la complexité technique du
bouzin.

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.

Yep. Surtout que d'ici que ça soit prêt, j'aimerais bien qu'on puisse
intégrer dans la branche actuelle les restrictions supplémentaires (si
quelqu'un pouvait lire/commenter/approuver mon patch, d'ailleurs, ça
serait cool) et la restriction d'accès aux documents joints (non, je
ne suis pas monomaniaque).

En tout cas, je suis content de voir qu'on a réussi à élaborer quelque
chose qui a de l'allure, bravo.
--
Pascal

Pascal Lamblin a écrit :

On 6/25/07, Joseph <joseph-x+8GNkP+qxjBR+Zhj3ejFg@public.gmane.org> wrote:

Voici une tentative de résumer ce que pourrait être Accès Restreint V2
suite aux discussions sur la zone.
[...]

Je suis assez d'accord avec tout ce qui s'est dit, du point de vue
fonctionnalités et interface.

Pour la partie technique (nombre de plugins, pipelines, tout ça), je
n'ai pas vraiment d'avis.
C'est vrai que si les profils peuvent servir à un autre type de plugin
d'accès restreint (par mot-clé plutôt que par arborescence), ça serait
intéressant, mais je n'ai aucune idée de la complexité technique du
bouzin.

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.

Yep. Surtout que d'ici que ça soit prêt, j'aimerais bien qu'on puisse
intégrer dans la branche actuelle les restrictions supplémentaires (si
quelqu'un pouvait lire/commenter/approuver mon patch, d'ailleurs, ça
serait cool) et la restriction d'accès aux documents joints (non, je
ne suis pas monomaniaque).

En tout cas, je suis content de voir qu'on a réussi à élaborer quelque
chose qui a de l'allure, bravo.

Pour la restriction d'accès aux documents joints il me semble qu'il est possible dès maintenant de commencer à coder.

Pour ton patch, pourrais tu préciser ce qu'il est censé modifier dans le comportement actuel de accès restreint ?

Ravi également de voir que les choses avancent.
Jo