On Oct 10, 2008, at 5:16 PM, Christopher Maier wrote:


On Oct 10, 2008, at 4:53 PM, Tom Lane wrote:

Alvaro Herrera <[EMAIL PROTECTED]> writes:
Looks like you should revoke DELETE privilege from plain users, and
have your delete trigger be a security definer function. There would be another security definer function to delete non-deduced rows which users
can call directly.

That seems overly complicated to use.

If the triggers that are privileged to delete deduced rows run as a
special user, couldn't the validation triggers look at CURRENT_USER
to see whether to allow the delete of a deduced row or not?

                        regards, tom lane

That sounds like the best approach, Tom. I've already implemented Alvaro's suggestion, which works nicely. It should be a simple matter to add in the current_user check. I'll give that a whirl and see how it goes.

Thanks for all the great suggestions, everyone.

Chris

Just for completeness, and for posterity, this solution (checking for CURRENT_USER) works great. I don't need to revoke DELETE privileges from anyone; simply define all my triggers that kick off a DELETE operation as SECURITY DEFINER (created by my privileged user role), and then have a BEFORE DELETE trigger that compares the value of CURRENT_USER to this privileged user's name. Works great, and is very easy to implement.

Thanks for the help!

--Chris



--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to