7.Auth Hook(未検証)
素直にSupabaseの認証機能を使うと
1.Supabase Authを使ってauh.usersテーブルにユーザー登録
2.Supabase Authで登録したユーザーIDをkeyにして「オリジナルで作ったpublic.usersテーブル」にデータを保存
という2回のリクエストを行わなければならず面倒です
Supabase上でSQLの設定
Supabase Dashboardで Auth > Auth Hooks > New Hookでフック名を入力します
Hook Sourceに以下のSQLを記述
CREATE OR REPLACE FUNCTION public.handle_new_user()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER
AS $s
BEGIN
INSERT INTO public.users (id, name, avatar_url)
VALUES (NEW.id, NEW.raw_user_meta_data->>'name', NEW.raw_user_meta_data->>'avatar_url');
RETURN NEW;
END;
$$;
NEW変数にはauth.usersテーブルのデータが格納されています
イベントに「SIGNUP」を選択しフックを作成することで、ユーザーがサインアップするときにpublic.usersテーブルにユーザーデータが保存されます
Authに登録する際は必要ないけどデータベースには登録したい情報(name, avatar_url)はメタデータとして渡します
Supabase上でpublicのusersテーブルを作成します
・id (UUID, PrimaryKey)
・name (TEXT)
・avatar_url (TEXT)
src/pages/signup.js