Today I Learned/in dev
supabase.auth 이용하기
떼굴펜
2025. 5. 15. 18:51
배경
- supabase.auth를 통해 인증할 때, supabase.public.users 테이블에 데이터를 자동으로 insert 하기를 원함
방법
1. users 테이블 생성
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();