Interdire des pages grâce à des tables réservées par rôle

Dans Grist, lorsque une page contient deux tables (Table 1 et Table 2), un utilisateur ne peut accéder à l’intégralité de la page que s’il dispose des droits sur toutes les tables présentes. Par exemple, si un utilisateur a le droit de consulter la Table 1 mais pas la Table 2, il ne pourra pas afficher la page entière, car cela lui donnerait indirectement accès à la Table 2, pour laquelle il n’a pas d’autorisation.

Cette contrainte peut cependant être exploitée pour simplifier la gestion des permissions avancées dans certains cas d’usage.

Cas pratique : Gestion des droits pour deux rôles distincts

Supposons que vous ayez plusieurs tables et vues, et que vous souhaitiez attribuer des droits différenciés à deux types d’utilisateurs (par exemple, Rôle 1 et Rôle 2). Voici une méthode efficace pour organiser ces permissions :

  1. Créer des tables dédiées par rôle :

    • Une table nommée « Notes_Rôle_1 » destinée aux utilisateurs du Rôle 1.

    • Une table nommée « Notes_Rôle_2 » destinée aux utilisateurs du Rôle 2.

  2. Configurer les permissions avancées :

    • Notes_Rôle_1 : Accessible en lecture uniquement par le Rôle 1 (interdit au Rôle 2).

    • Notes_Rôle_2 : Accessible en lecture uniquement par le Rôle 2 (interdit au Rôle 1).

  3. Personnaliser l’affichage par rôle :

    • Dans la page destinée à être vues par Rôle 1, ajoutez un widget Markdown lié à la table « Notes_Rôle_1 ». Cela permet :

      • D’empêcher le Rôle 2 de voir cette page.

      • D’ajouter des explications contextuelles (par exemple, des instructions ou des détails spécifiques à ce rôle).

    • idem pour les pages destinées à être vue par Rôle 2

Avantages de cette approche

  • Possibilité d’afficher une même table de manières différentes selon le rôle de l’utilisateur

  • Les utilisateurs voient uniquement les informations pertinentes pour leur rôle

  • Les widgets Markdown permettent d’ajouter des messages ciblés (explications, alertes, ou guides) adaptés à chaque groupe d’utilisateurs.

1 « J'aime »

Sachant que si une page n’est pas accessible à un rôle, alors les sous-pages ne lui seront pas accessibles non plus (j’appelle sous-pages les pages qui ont été glissées-déposées sur la page principale, comme dans la capture ci-dessous).

Si vous construisez votre arborescence avec ce principe en tête, il suffira d’ajouter le widget Markdown « de masquage » une fois pour bloquer autant de pages que nécessaire !