File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2323 """
2424)
2525
26- GRANT_MEMBER_SQL = text (
27- """
28- DO $$
29- DECLARE
30- username text := :grantee;
31- BEGIN
32- IF username IS NULL OR username = '' THEN
33- RETURN;
34- END IF;
35- IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = username) THEN
36- EXECUTE format('GRANT app_read TO %I', username);
37- END IF;
38- END $$;
39- """
40- )
41-
4226
4327def _parse_app_read_members () -> list [str ]:
4428 members = os .environ .get ("APP_READ_MEMBERS" , "" )
@@ -53,7 +37,18 @@ def grant_app_read_members(executor: Session | Connection | None) -> None:
5337 if not members :
5438 return
5539 for member in members :
56- executor .execute (GRANT_MEMBER_SQL , {"grantee" : member })
40+ safe_member = member .replace ("'" , "''" )
41+ stmt = text (
42+ f"""
43+ DO $$
44+ BEGIN
45+ IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = '{ safe_member } ') THEN
46+ EXECUTE 'GRANT app_read TO { safe_member } ';
47+ END IF;
48+ END $$;
49+ """
50+ )
51+ executor .execute (stmt )
5752
5853
5954def recreate_public_schema (session : Session ) -> None :
You can’t perform that action at this time.
0 commit comments