Aide sur les Access Rules pour associations multi-utlisateurs

Bonjour à tous,

Notre service est actuellement en train de mettre en place un outil de suivi d’intermédiation locative sur Grist.gouv.

Étant novices en la matière, nous avons beaucoup sollicité l’IA pour nous aider à structurer nos tables et nos formules (calculs de prorata, durée de vacance, etc.), ce qui nous a permis de bien avancer sur la partie métier. Cependant, nous butons sérieusement sur le paramétrage des Access Rules.

Notre tableau suit des logements rattachés à des ménages sur une année civile. Chaque logement appartient à un « Opérateur » (une association).

Une association peut avoir plusieurs collaborateurs (donc plusieurs adresses e-mail différentes).
Chaque utilisateur ne doit voir, modifier et créer que les lignes (logements, ménages, occupations) qui concernent son association.

Nous avons une table Referentiel_Territorial (nos opérateurs) et une table Autorisation qui semble être la clé, mais nous ne savons pas comment rédiger la règle de permission pour faire le lien entre l’e-mail de l’utilisateur connecté et l’opérateur rattaché à la ligne.

Voici un extrait de notre classe Logements et la table Autorisation que nous essayons d’utiliser :

`Python# Table qui fait le lien entre emails et opérateurs
@grist.UserTable
class Autorisation:
Email_contact = grist.Text()
Operateur = grist.Text() # Le nom de l’association

Table principale

@grist.UserTable
class Logements:
Operateur = grist.Reference(‹ Referentiel_Territorial ›)

…`

Comment rédiger la règle d’accès pour qu’un utilisateur accède aux données si son user.Email est présent dans la table Autorisation pour l’opérateur concerné ?

Au-delà des permissions, nous sommes preneurs de tout avis sur notre architecture actuelle. Nous pouvons vous transmettre l’intégralité du code (classes et formules) si cela peut aider à avoir une vision d’ensemble.

Nous craignons que notre approche actuelle ne soit pas la plus optimisée pour Grist, notamment sur les liens entre Logements, Menages et Occupations.

Un immense merci pour votre temps et votre expertise !

Bonjour,
Est-ce que vous avez vraiment besoin d’une table « autorisations » ? si vous stockez dans votre table utilisateurs l’asso à laquelle il appartient ?

J’ai fait un exemple ici : Ex - asso multi-utilisateurs - Grist

Après vous mettez une permission en autorisant l’utilisateur à accéder aux lignes de son asso uniquement :

user.attr.asso == rec.Operateur

Bonjour,

Merci beaucoup pour votre aide !!! Ça nous a permis de débloquer la situation avec votre exemple concret. :slight_smile:

1 « J'aime »

avec plaisir, super :slight_smile: n’hésitez-pas si vous avez d’autres questions !