-
Olivér FACKLAM authoredOlivér FACKLAM authored
Overview
Chaque utilisateur a un certain niveau de droit sur chaque groupe. Ce niveau de droit indique ce qu'il a le droit de savoir et de faire.
Les differents niveaux de droit [specification de actions.graphql]
Par rapport à un groupe donné, un user peut avoir différents niveaux de droits :
- none : ne sait meme pas que le groupe existe, aucun autre droit (typiquement, une connection où l'utilisateur ne s'est pas authentifié)
- authenticated : sait que le groupe existe, aucun autre droit (une connection on-platal sans auth, ou une connection authentifiée)
- viewer : le user a aussi accès à l'activité publique du groupe : frontpage, Q&A, liste des membres, speakers et admins, Message dont le groupe est destinataire
- member : le user a aussi acces à l'activité interne du groupe : les PrivatePost, ainsi que les Message dont le groupe est auteur
- speaker : le user peut aussi parler au nom du groupe. Il a le droit de publier des annonces et d'organiser des évènements
- admin : le user a tous les droits sur le groupe
Le graphe organique des groupes
Les champs parent
et children
de l'objet Group
dans le schéma GraphQL définissent un graphe des groupes, appelé graphe organique des groupes car il définit les héritages de droits d'admin (l'admin d'un groupe peut administrer les groupes enfants) (de la même facon qu'une hiérarchie organique militaire). Ce graphe ne doit pas contenir de cycles, i.e. doit être un arbre.
Conditions pour les niveaux de droit
Un des rôles du graphe organique des groupes est de définir le niveau de droit des users pour chaque groupe.
D'abord, petit détail de terminologie : les cinq niveaux de droits sont inclus les uns dans les autres (un speaker est aussi un viewer, par ex.) (sauf pour les permissions héritées)
Plus précisément, on a les inclusions suivantes : admin strict > speaker > membre strict > membre hérité > viewer > authenticated. Il n'y a que admin hérité qui n'est pas nécessairement inclus dans les autres niveaux de droits.
Dans la BDD sous-jacente, il faut que pour chaque groupe, on ait admin > speaker > member.
Détaillons ici les conditions exactes pour avoir un niveau de droit donné.
Pour les groupes simples
- Member :
- Un user est membre strict du groupe G s'il est member de G selon la BDD sous-jacente.
- Un user est membre hérité du groupe G s'il est membre strict d'un de ses descendants.
- Speaker : un user est speaker du groupe G s'il est speaker de G selon la BDD. Pas de notion d'héritage de speaker.
- Admin :
- Un user est admin strict du groupe G s'il est admin de G selon la BDD.
- Un user est admin hérité du groupe G s'il est admin strict d'un de ses ascendants.
- Viewer : un user est viewer du groupe G
- s'il est membre hérité de G.
- s'il est membre hérité d'un groupe immédiatement parent de G (one-edge-down visibility), ou
- s'il est membre hérité d'un groupe faisant partie du champ "visibilityEdge" de G
- s'il est membre d'un métagroupe dont G est membre (implicit visibility-edges).
- Dans tous les autres cas, le user a le niveau de droits "none" ou "authenticated", selon le cas de figure.
Pour les méta-groupes
- Un user est membre d'un méta-groupe G s'il est membre (hérité) d'un groupe simple dans G.
- Un user est speaker d'un méta-groupe G s'il est speaker d'un groupe simple dans G.
- Un user est admin d'un méta-groupe G s'il est admin (hérité) d'un groupe simple dans G.
- Un user est viewer d'un méta-groupe G s'il est viewer d'un groupe simple dans G.
L'autre rôle du graphe organique des groupes est de permettre l'administration "en cascade" des groupes enfants.
Si un groupe est le parent d'un autre, alors les admins du groupe parent sont admins (hérités) du groupe enfant. Exemples :
- BR est parent de Chocapix. L'admin de Chocapix est parti en vacances. L'admin de BR peut, en tant qu'admin (hérité) de Chocapix, faire ce qu'il a à faire, sans attendre le retour du respo Chocapix.
- Cotisants-Kès est parent de Troll'X. Troll'X fait n'importe quoi (en floodant de Messages par ex). Les admins de Cotisants-Kès (les kessiers) peuvent, comme ils sont admins hérités de Troll'X, stopper les dégâts.