Thread: Dynamic views/permissions

Dynamic views/permissions

From
Raj Mathur
Date:
I'm trying to permit users access to their own records in a database.
A sample would be:

create table logins
(       login char(8),       name char(32),       primary key (login)
);

When a login is added an SQL user is created simultaneously.  Now I
want the user to be able to view her own data:

create function userid() returns text as 'select current_user::text;' language sql;

create view loginview as select * from logins where logins.login=userid();

grant select on loginview to public;
[OR grant select on loginview to <userid>...]

However, a select * from loginview; doesn't return any rows.  Is what
I'm trying not possible at all, or am I just trying to implement it
wrong?

Regards,

-- Raju
-- 
Raj Mathur                raju@kandalaya.org      http://kandalaya.org/      GPG: 78D4 FC67 367F 40E2 0DD5  0FEF C968
D0EFCC68 D17F                     It is the mind that moves
 


Re: Dynamic views/permissions

From
Ian Barwick
Date:
On Friday 30 May 2003 21:31, Raj Mathur wrote:
> I'm trying to permit users access to their own records in a database.
> A sample would be:
>
> create table logins
> (
>         login char(8),
>         name char(32),
>         primary key (login)
> );
>
> When a login is added an SQL user is created simultaneously.  Now I
> want the user to be able to view her own data:
>
> create function userid() returns text as 'select current_user::text;'
>   language sql;
>
> create view loginview as select * from logins where logins.login=userid();
>
> grant select on loginview to public;
> [OR grant select on loginview to <userid>...]
>
> However, a select * from loginview; doesn't return any rows.  Is what
> I'm trying not possible at all, or am I just trying to implement it
> wrong?

What happens if you define logins.login as VARCHAR instead of CHAR?

See also:
http://www.postgresql.org/docs/faqs/FAQ.html#4.14


Ian Barwick
barwick@gmx.net