Add CDB_Username() function

This commit is contained in:
Gonzalo Riestra 2019-02-20 10:38:00 +01:00
parent 3f4479fe12
commit 2a4ecd4850
5 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,13 @@
-- Function returning the username of the provided user
CREATE OR REPLACE FUNCTION _CDB_Username(pg_user TEXT)
RETURNS text
AS $$
SELECT CDB_Conf_GetConf(CONCAT('api_keys_', pg_user))->>'username';
$$ LANGUAGE SQL STRICT IMMUTABLE PARALLEL SAFE SECURITY DEFINER;
-- Function returning the username of the current user
CREATE OR REPLACE FUNCTION CDB_Username()
RETURNS text
AS $$
SELECT _CDB_Username(current_user);
$$ LANGUAGE SQL STABLE PARALLEL SAFE;

View File

@ -0,0 +1 @@
../scripts-available/CDB_Username.sql

17
test/CDB_Username.sql Normal file
View File

@ -0,0 +1,17 @@
SELECT current_user; -- postgres
SELECT CDB_Username(); -- (NULL)
-- Connect with admin
\set QUIET on
\o log/test.log
SELECT current_database() AS current_database;
\gset
SELECT SUBSTRING (:'current_database', 19, 36) AS user_id;
\gset
SELECT rolname AS admin_user FROM pg_roles where rolname LIKE ('%' || :'user_id');
\gset
\c :current_database :admin_user
\o
\set QUIET off
SELECT CDB_Username(); -- admin

3
test/CDB_Username_expect Normal file
View File

@ -0,0 +1,3 @@
postgres
admin