🕶️
[supabase] 特定のメールアドレスでしか登録を許可しない
やりたいこと
メールアドレスのドメインが特定のドメイン(今回は @hoge.com
)でしか登録を許可しない。
方法
functionとtriggerを使う
sqlエディタで設定していく。
まずはfunctionを作る
function
CREATE OR REPLACE FUNCTION public.check_user_domain()
RETURNS TRIGGER AS $$
BEGIN
-- @hoge.com ドメインのみを許可
IF NEW.email NOT LIKE '%@hoge.com' THEN
RAISE EXCEPTION 'INCORRECT_DOMAIN: Only @hoge.com emails are allowed.';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
次にtriggerを作る
trigger
CREATE TRIGGER check_user_domain_trigger
BEFORE INSERT ON auth.users
FOR EACH ROW EXECUTE PROCEDURE public.check_user_domain();
auth.usersがinsertされる前に先ほど作った関数(check_user_domain)を実行するという仕組み。
確認
特定のメールアドレスではないとユーザー作成時にエラーが返されるようになっています。
Discussion