From 3e4fbb3cc4fa116159b9d10735eda8a78e4b0736 Mon Sep 17 00:00:00 2001 From: einhverfr Date: Mon, 1 Oct 2007 22:10:17 +0000 Subject: Adding role listing function git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1683 4979c152-3d1c-0410-bac9-87ea11338e46 --- sql/modules/admin.sql | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'sql/modules') diff --git a/sql/modules/admin.sql b/sql/modules/admin.sql index 6b6aecfb..9423e737 100644 --- a/sql/modules/admin.sql +++ b/sql/modules/admin.sql @@ -402,4 +402,24 @@ comment on function admin_delete_group(text) IS $$ remove a login-capable user. $$; +CREATE OR REPLACE FUNCTION admin_list_roles(in_username text) +RETURNS SETOF text AS +$$ +DECLARE out_rolename RECORD; +BEGIN + FOR out_rolename IN + SELECT rolname FROM pg_authid + WHERE oid IN (SELECT id FROM connectby( + '(SELECT m.member, m.roleid, r.oid FROM pg_authid r + LEFT JOIN pg_auth_members m ON (r.oid = m.roleid)) a', + 'oid', 'member', 'oid', '320461', '0', ',' + ) c(id integer, parent integer, "level" integer, + path text, list_order integer) + ) + LOOP + RETURN NEXT out_rolename.rolname; + END LOOP; +END; +$$ LANGUAGE PLPGSQL; + -- TODO: Add admin user -- cgit v1.2.3