도록

supabase.auth 이용하기 본문

Today I Learned/in dev

supabase.auth 이용하기

떼굴펜 2025. 5. 15. 18:51

배경

- supabase.auth를 통해 인증할 때, supabase.public.users 테이블에 데이터를 자동으로 insert 하기를 원함

 

방법

1. users 테이블 생성

나는 이런 모양의 user 테이블을 생성했다.

2. sql editor에서 trigger 함수 생성

-- 1. 기존 트리거 삭제
drop trigger if exists on_auth_user_created on auth.users;

-- 2. 트리거 함수 수정
create or replace function public.handle_new_auth_user()
returns trigger as $$
declare
  new_json json;
  provider text;
  provider_id text;
  name text;
  picture text;
begin
  begin
    -- 필드 추출
    provider := NEW.raw_app_meta_data ->> 'provider';
    provider_id := NEW.raw_user_meta_data ->> 'provider_id';
    name := NEW.raw_user_meta_data ->> 'name';
    picture := NEW.raw_user_meta_data ->> 'picture';

    -- 삽입
    insert into public.user (uid, email, type, nick, profile, social_id)
    values (NEW.id, NEW.email, provider, name, picture, provider_id);

  exception when others then
    new_json := row_to_json(NEW);
    raise exception 'User Insert Error: %, NEW: %', SQLERRM, new_json::text;
  end;
  return new;
end;
$$ language plpgsql security definer;

-- 3. 트리거 걸기
create trigger on_auth_user_created
after insert on auth.users
for each row execute procedure public.handle_new_auth_user();