PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#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.

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

Pied de page des forums