Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
56 lines (48 loc) · 2.3 KB

File metadata and controls

56 lines (48 loc) · 2.3 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
\pset footer off
SET client_min_messages TO WARNING;
\set ON_ERROR_STOP ON
\set USERNAME :username
\set SCHEMA_NAME :schema_name
\set ACCESS_MODE :access_mode
SELECT CASE
WHEN upper(:'ACCESS_MODE') = 'RW' THEN 'read-write'
WHEN upper(:'ACCESS_MODE') = 'RU' THEN 'read-update'
ELSE 'read-only'
END AS privileges_type
\gset
\echo
\echo 'Granting ':privileges_type' privileges on schema "':SCHEMA_NAME'" to user "':USERNAME'" ...'
SET tmp.dbname TO :"DBNAME";
SET tmp.username TO :"USERNAME";
SET tmp.schema_name TO :"SCHEMA_NAME";
SET tmp.access_mode TO :"ACCESS_MODE";
DO $$
DECLARE privileges_type text;
aux_privileges_type text;
BEGIN
IF upper(current_setting('tmp.access_mode')) = 'RW' THEN
privileges_type := 'ALL';
aux_privileges_type := 'ALL';
ELSIF upper(current_setting('tmp.access_mode')) = 'RU' THEN
privileges_type := 'SELECT, INSERT, UPDATE';
aux_privileges_type := 'SELECT';
ELSE
privileges_type := 'SELECT';
aux_privileges_type := 'SELECT';
END IF;
EXECUTE format('GRANT CONNECT, TEMP ON DATABASE %I TO %I', current_setting('tmp.dbname'), current_setting('tmp.username'));
EXECUTE format('GRANT USAGE, CREATE ON SCHEMA %I TO %I', current_setting('tmp.schema_name'), current_setting('tmp.username'));
EXECUTE format('GRANT '||privileges_type||' ON ALL TABLES IN SCHEMA %I TO %I', current_setting('tmp.schema_name'), current_setting('tmp.username'));
EXECUTE format('GRANT USAGE ON SCHEMA citydb_pkg TO %I', current_setting('tmp.username'));
EXECUTE format('GRANT '||aux_privileges_type||' ON ALL TABLES IN SCHEMA citydb_pkg TO %I', current_setting('tmp.username'));
EXECUTE format('GRANT USAGE ON SCHEMA public TO %I', current_setting('tmp.username'));
EXECUTE format('GRANT '||aux_privileges_type||' ON ALL TABLES IN SCHEMA public TO %I', current_setting('tmp.username'));
IF upper(current_setting('tmp.access_mode')) = 'RW' THEN
EXECUTE format('GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA %I TO %I', current_setting('tmp.schema_name'), current_setting('tmp.username'));
ELSIF upper(current_setting('tmp.access_mode')) = 'RU' THEN
EXECUTE format('GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA %I TO %I', current_setting('tmp.schema_name'), current_setting('tmp.username'));
END IF;
END
$$;
\echo
\echo 'Successfully granted ':privileges_type' privileges.'
Morty Proxy This is a proxified and sanitized view of the page, visit original site.