J’ai plusieurs services qui complète une table.
Chacun utilise et remplit ce tableau via une vue de ce tableau filtré par service. Chaque service ne voyant que ses lignes.
On me demande de rendre invisible la vue d’un service par les autres services.
Bonjour, je ne suis pas sûr de comprendre la différence entre chaque service ne voit que ses lignes (en jouant avec les permissions avancées je suppose) et le fait de rendre invisible la vue d’un service par les autres services… Pouvez-vous joindre une capture d’écran de ce que vous souhaitez rendre invisible précisément ?
Peut-être que chaque service filtre lui-même ce qui lui donne la possibilité de tout voir.
Pour limiter les données vues par chacun, il faut passer par une table d’utilisateurs contenant a minima leur mail de connexion et leur service (Mail et Service dans la suite de ce mail à remplacer par vos valeurs).
Vous devez ensuite indiquer le Service pour chaque enregistrement de la table dans une colonne Service_autorise (qui peut être masquée, à remplacer par votre valeur)
Dans les permissions avancées, il faudra ajouter des propriétés d’utilisateur (bouton en haut) et compléter la ligne : donner un nom (Utilisateurs par exemple, libre), utiliser comme propriété appairage : user.Email
qui récupère le mail de l’utilisateur, choisir la table des utilisateurs ensuite et le Mail comme colonne cible.
Ajouter des règles pour la table et utiliser la règle : rec.Service_autorise in user.Utilisateurs.Service RUCD et une règle pour tous les autres interdire RUCD
Les utilisateurs de chaque service ne verront/modifieront/créeront/effaceront que les lignes qui contiennent leur Service dans la colonne Service_autorise.
Dans votre document, vous n’avez pas défini les propriétés de l’utilisateur
Je vois aussi que ‹ tous les autres › peuvent lire et créer, tout le monde peut donc voir toutes les données (R et C verts), seul ceux dont le service correspond à Info_acces peuvent modifier et effacer un enregistrement. (U et D)
Si vous voulez que les autres services ne voient que leur infos, il faut leur interdire la lecture, donc dans tous les autres barrer RUC et D.
Pour cacher les colonnes de Dates_… il n’est pas nécessaire d’ajouter une règle, il suffit de cacher les colonnes en ayant interdit aux éditeurs l’édition de la structure dans les règles au bas des acl (très recommandé).
Sinon, pouvez vous partager un document avec des données fantaisistes et aux moins deux services ?
Je vous ai fait un document simplifié que vous pouvez dupliquer pour avoir les droits de propriétaire : https://grist.numerique.gouv.fr/o/docs/cc1261fsQHWy/Droit-selon-service
Vous pouvez le voir comme Machin ou comme Bidule pour voir le fonctionnement (… au bout de permissions avancées) puis allez voir les droits.
Merci pour votre réponse qui m’a beaucoup aidé.
Je reprends un projet qui a été développé par qq d’autre (pas simple).
Il y a des vues organisées par service. Grâce à vos conseils, j’ai pu limiter l’accès aux données appartenant à chaque service à eux-mêmes.
Les « owners » pourront eux continuer à voir l’ensemble des données.
Est-il possible d’aller plus loin et de « supprimer » la vision de « vue service 1 » par les utilisateurs de service 2 ?
Serait-il possible de gérer les services autorisés dans la table « utilisateurs », en utilisant une colonne « services autorises » pour qu’un service puisse accéder aux données de plusieurs services ?
Pouvez-vous me mettre comme OWNER sur votre document de test ? Je ne peux pas accéder aux ACL.
(Arnault.Frouin@ac-rennes.fr)
Est-il possible d’aller plus loin et de « supprimer » la vision de « vue service 1 » par les utilisateurs de service 2 ?
La même vue doit fonctionner pour tous les services. Les vues s’appuient sur des tables sur lesquelles vous mettez des droits. Si les droits pour un service sont réglés pour n’afficher que les lignes dont le Service est contenu dans la colonne Service_autorisé, la vue est filtrée et donc différente automatiquement.
Je viens d’ajouter votre vue Service à mon document d’origine. Si vous regardez avec un utilisateur du service 1 ou du service 2, ils ne voient que les données qui lui sont affectées, il n’est pas nécessaire d’avoir une vue par service.
Je n’ai pas modifié les droits. Vous, en temps que propriétaire, voyez toutes les données mais les utilisateurs ne voient que leur service :
Je vous ai ajouté à ma démo.
Le fait qu’il y ait plusieurs vues est un structure élaborée par l’ancien gérant du projet. Mais effectivement cela fonctionne avec une seule vue en mettant des droits avec service _autorise.
J’ai vu ceci dans les permissions avancées de mon projet (mais ça ne semble pas coché)
Oui, la case décochée suffit à interdire les modifications de structure. Quand cette case est désactivée, les éditeurs ne peuvent plus montrer ou cacher des colonnes, les déplacer, les agrandir, modifier les formules…
Un sécurité indispensable dans la plupart des cas.
J’ai ajouté dans votre document d’exemple une vue Tous services qui s’adapte à l’éditeur, en fonction de son service. J’y ai caché la colonne Service_autorise.
Elle ne se cache pas dans la fiche, il faut modifier la disposition de celle-ci si vous voulez aussi le cacher dans cette fiche.
Bonjour, @Arnault, pourriez-vous me partager le document pour que je puisse voir la configuration des permissions ? (samuel.remoue(at)interieur.gouv.fr)
Je vous remercie par avance.