Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 17/08/2016 16:07:47
- c che
- Membre
restriction par un champ de ce que voit un utilisateur
Bonjour,
J'ai créé ma base de données sous postgres
avec des tables objets et une table commune
table objet1 (obj_id, obj_champ, obj_com_insee)
table commune (com_insee, com_nom)
et je souhaite savoir s'il est possible de faire en sorte qu'un utilisateur puisse uniquement voir/modifier/créer/supprimer les objets qui appartiennent à sa commune.
Dois-je passer par une fonction (avec des fonctions if et/ou case when) ou bien par autre chose?
Merci d'avance,
c.che
Dernière modification par c che (17/08/2016 16:11:16)
Hors ligne
#2 17/08/2016 16:27:49
- rjuju
- Administrateur
Re : restriction par un champ de ce que voit un utilisateur
Si vous êtes en version 9.5 : http://docs.postgresql.fr/9.5/ddl-rowsecurity.html
Sinon, pas de moyen simple.
Julien.
https://rjuju.github.io/
Hors ligne
#3 17/08/2016 16:38:02
- c che
- Membre
Re : restriction par un champ de ce que voit un utilisateur
L'organisme est actuellement en 9.4 mais peut être pourrons nous l'upgrader si ce n'est pas possible autrement
Oui j'ai vu ça lors de mes recherches et , par curiosité, j'avais tenté cette méthode (après avoir installer la 9.5 en localhost) mais je n'ai pas réussi à la faire fonctionner
ALTER TABLE objet ENABLE ROW LEVEL SECURITY;
CREATE POLICY test_restriction ON objet TO "utilisateur"
USING (obj_com_insee = (SELECT obj_com_insee FROM objet WHERE obj_com_insee=79000))
Je n'ai pas de message d'erreur mais au niveau du résultat l'utilisateur ne voit aucune ligne de la table ni sa géométrie (j'utilise postgis et qgis )
Dernière modification par c che (17/08/2016 16:44:51)
Hors ligne