7.Auth Hook(未検証)

NextJS

素直に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

BACK