You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.3 KiB
PL/PgSQL
38 lines
1.3 KiB
PL/PgSQL
-- Add migration script here
|
|
-- Create the anon and authenticated roles if they don't exist
|
|
CREATE OR REPLACE FUNCTION create_roles(roles text []) RETURNS void LANGUAGE plpgsql AS $$
|
|
DECLARE role_name text;
|
|
BEGIN FOREACH role_name IN ARRAY roles LOOP IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM pg_roles
|
|
WHERE rolname = role_name
|
|
) THEN EXECUTE 'CREATE ROLE ' || role_name;
|
|
END IF;
|
|
END LOOP;
|
|
END;
|
|
$$;
|
|
SELECT create_roles(ARRAY ['anon', 'authenticated']);
|
|
|
|
-- Create supabase_admin user if it does not exist
|
|
DO $$ BEGIN IF NOT EXISTS (
|
|
SELECT
|
|
FROM pg_catalog.pg_roles
|
|
WHERE rolname = 'supabase_admin'
|
|
) THEN CREATE USER supabase_admin LOGIN CREATEROLE CREATEDB REPLICATION BYPASSRLS;
|
|
END IF;
|
|
END $$;
|
|
-- Create supabase_auth_admin user if it does not exist
|
|
DO $$ BEGIN IF NOT EXISTS (
|
|
SELECT
|
|
FROM pg_catalog.pg_roles
|
|
WHERE rolname = 'supabase_auth_admin'
|
|
) THEN CREATE USER supabase_auth_admin BYPASSRLS NOINHERIT CREATEROLE LOGIN NOREPLICATION PASSWORD 'root';
|
|
END IF;
|
|
END $$;
|
|
-- Create auth schema if it does not exist
|
|
CREATE SCHEMA IF NOT EXISTS auth AUTHORIZATION supabase_auth_admin;
|
|
-- Grant permissions
|
|
GRANT CREATE ON DATABASE postgres TO supabase_auth_admin;
|
|
-- Set search_path for supabase_auth_admin
|
|
ALTER USER supabase_auth_admin SET search_path = 'auth';
|