Bonjour à tous,
Dans la vidéo des permissions avancées Grist (qui est top), nous voyons comment autoriser des utilisateurs en fonction du service (routes, cabinet etc).
Imaginons que j’ai un utilisateur qui appartient à plusieurs groupes, une table utilisateur en relation vers une table groupe (relation un à plusieurs), c’est possible de gérer des permissions via des groupes ?
Merci beaucoup
Bonne journée et bon week-end
Bonjour,
Si par exemple un utilisateur appartient à plusieurs services, vous faites dans la table Utilisateurs (utilisée pour l’appairage) une colonne Réf multiple vers votre table qui contient les services, afin de pouvoir affecter plusieurs services à un user.
Ensuite dans les permissions avancées vous pouvez utiliser le mot clé in qui permet de regarder si la ligne de la table sur laquelle vous mettez vos permissions a dans la colonne du service (rec.Service) une valeur incluse dans la liste des services de l’utilisateur (user.attr.Services) :
rec.Service in user.attr.Services
→ autoriser
attr est ici la variable correspondant à la table d’appairage.
Est-ce que cela pourrait vous aider ?
Bonjour Aude,
Oui ce système me parait pertinent en effet.
La référence multiple c’est une relation un à n ?
Dans ce cas, je dois ajouter plusieurs avec l’utilisateur en fonction du nombre de service. Ex si un utilisateur se trouve dans le groupe des dépendances vertes et le groupe des dépendances bleues, je vais avoir deux enregistrements pour l’utilisateur qui sera associé à la table des services.
Merci beaucoup
Bonne journée
Solution que j’ai testée efficacement :
- dans une table Utilisateurs : colonnes mail et rôles, avec plusieurs rôles possible pour chaque email
- dans la table données : dans la colonne ‹ rôles ›, chaque ligne peut être rendue accessible par plusieurs rôles.
J’ai rajouté dans la table ‹ données › une colonne de calcul ‹ Utilisateurs_autorisé › rapatriant les email des personnes dont le rôle est présent dans la colonne ‹ rôles › de la table des données : formule : list(c.mail for d in $Roles for c in Utilisateurs.lookupRecords(Roles=CONTAINS(d)))
Il peut donc y avoir plusieurs mails pour chaque ligne de données.
Puis, dans les permissions, j’indique « user.Email in rec.Utilisateur_autorisé » afin qu’un utilisateur n’ait droit qu’aux lignes auxquelles il est autorisé.