Vous n'êtes pas identifié(e).
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
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
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