반응형

 

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] auth hooking  (0) 2025.01.24
[Supabase] Edge function 만들기  (0) 2024.12.11
[Flutter] supabase database 의 json 내부 query하기  (0) 2024.09.19

+ Recent posts