Supabase Authentication을 hooking 해서 사용해야 하는 경우가 있습니다.
이때 sql query 함수를 개발하고 테스트를 보통은 cli를 통해서 진행할텐데, cli에 extension이 활성화 안되어있는 경우 검토가 힘들어지겠죠.
저도 역시 plv8이 활성화 안되어있어서 , 문제였습니다.
해결책은 다음 과 같이 찾아서 정리해봤습니다.
1. supabase에 기본적으로 extension으로 plv8이 있는 거 같음.
2. 그래서 이를 활성화 시키는 방법을 찾아서 실행.
3. 활성화 된것 확인
extension 활성화
CREATE EXTENSION plv8;
설치 확인
SELECT * FROM pg_available_extensions WHERE name = 'plv8';
코드 작성...
create or replace function custom_jwt_token_hook(event jsonb)
returns jsonb
language plv8
as $$
var org_id, role, org_depart_id;
-- Fetch the current user's level from the profiles table
var result = plv8.execute("select org_id, role, org_depart_id from public.user_profiles where user_id = $1", [event.user_id]);
if (result.length > 0) {
org_id = result[0].org_id;
org_depart_id = result[0].org_depart_id;
role = result[0].role;
} else {
org_id = 0;
org_depart_id = 0;
role = '';
}
-- Check if 'claims' exists in the event object; if not, initialize it
if (!event.claims) {
event.claims = {};
}
-- Update the level in the claims
event.claims.org_id = org_id;
event.claims.org_depart_id = org_depart_id;
event.claims.role = role;
return event;
$$;
grant all
on table public.user_profiles
to supabase_auth_admin;
revoke all
on table public.user_profiles
from authenticated, anon, public;
'Supabase' 카테고리의 다른 글
[Supabase] Edge function 만들기 (0) | 2024.12.11 |
---|---|
[Flutter] supabase database 의 json 내부 query하기 (0) | 2024.09.19 |