File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -126,10 +126,38 @@ export class DbAdmin {
126126 const sql = `
127127 DO $$
128128 BEGIN
129+ -- Create role if it doesn't exist
129130 IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = '${ user } ') THEN
130131 CREATE ROLE ${ user } LOGIN PASSWORD '${ password } ';
132+ END IF;
133+
134+ -- Grant anonymous role if not already granted
135+ IF NOT EXISTS (
136+ SELECT 1 FROM pg_auth_members am
137+ JOIN pg_roles r1 ON am.roleid = r1.oid
138+ JOIN pg_roles r2 ON am.member = r2.oid
139+ WHERE r1.rolname = '${ anonRole } ' AND r2.rolname = '${ user } '
140+ ) THEN
131141 GRANT ${ anonRole } TO ${ user } ;
142+ END IF;
143+
144+ -- Grant authenticated role if not already granted
145+ IF NOT EXISTS (
146+ SELECT 1 FROM pg_auth_members am
147+ JOIN pg_roles r1 ON am.roleid = r1.oid
148+ JOIN pg_roles r2 ON am.member = r2.oid
149+ WHERE r1.rolname = '${ authRole } ' AND r2.rolname = '${ user } '
150+ ) THEN
132151 GRANT ${ authRole } TO ${ user } ;
152+ END IF;
153+
154+ -- Grant administrator role if not already granted
155+ IF NOT EXISTS (
156+ SELECT 1 FROM pg_auth_members am
157+ JOIN pg_roles r1 ON am.roleid = r1.oid
158+ JOIN pg_roles r2 ON am.member = r2.oid
159+ WHERE r1.rolname = '${ adminRole } ' AND r2.rolname = '${ user } '
160+ ) THEN
133161 GRANT ${ adminRole } TO ${ user } ;
134162 END IF;
135163 END $$;
You can’t perform that action at this time.
0 commit comments