/ script / meta_rbac_add_domain.sql
meta_rbac_add_domain.sql
 1  -- SPDX-FileCopyrightText: 2023 LakeSoul Contributors
 2  --
 3  -- SPDX-License-Identifier: Apache-2.0
 4  
 5  SET domain.name TO :domain;
 6  DO
 7  $$
 8      DECLARE role_name text;
 9      BEGIN
10          -- Create a role with name=domain, used as a group name
11          role_name := current_setting('domain.name');
12          IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = role_name) THEN
13              EXECUTE 'CREATE ROLE ' || role_name || ' WITH INHERIT';
14          END IF;
15          -- Create a role with name=domain_admins, and granted base_admin_role
16          role_name := concat(current_setting('domain.name'), '_admins');
17          IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = role_name) THEN
18              EXECUTE 'CREATE ROLE ' || role_name || ' WITH INHERIT';
19              EXECUTE 'GRANT base_admin_role TO ' || role_name;
20          END IF;
21          -- Create a role with name=domain_users, and granted base_user_role
22          role_name := concat(current_setting('domain.name'), '_users');
23          IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = role_name) THEN
24              EXECUTE 'CREATE ROLE ' || role_name || ' WITH INHERIT';
25              EXECUTE 'GRANT base_user_role TO ' || role_name;
26          END IF;
27      END
28  $$;