Re: current_role of caller of a DEFINER function - Mailing list pgsql-general

From walther@technowledgy.de
Subject Re: current_role of caller of a DEFINER function
Date
Msg-id 0b7d3b22-3e98-4eca-bc14-9430c48c0217@technowledgy.de
Whole thread Raw
In response to current_role of caller of a DEFINER function  (Dominique Devienne <ddevienne@gmail.com>)
Responses Re: current_role of caller of a DEFINER function
List pgsql-general
Dominique Devienne:
> 1) Is there any way to know the current_role of the caller of a
> DEFINER function. I fear the answer is no, but better be sure from
> experts here.

You can do something like this:

CREATE DOMAIN current_user_only AS text
   CONSTRAINT current_user_only CHECK (VALUE = CURRENT_USER);

CREATE FUNCTION func(
   calling_user current_user_only DEFAULT CURRENT_USER
) ... SECURITY DEFINER;

The default value will be evaluated in the context of the calling user, 
the constraint forces it to never be set explicitly to something else.

Thus you can use calling_user inside your function.

Best,

Wolfgang



pgsql-general by date:

Previous
From: Erik Wienhold
Date:
Subject: Re: current_role of caller of a DEFINER function
Next
From: Dominique Devienne
Date:
Subject: Re: current_role of caller of a DEFINER function