from fastapi import Depends from fastapi.security import OAuth2PasswordBearer from typing import Annotated from db.supabase_service import get_supabase from supabase import Client from utils.exceptions import BAD_REQUEST, UNAUTHORIZED oauth2_scheme = OAuth2PasswordBearer(tokenUrl="login") def get_user_response(token: str, supabase: Client): try: return supabase.auth.get_user(token) except: raise BAD_REQUEST async def get_id( token: Annotated[str, Depends(oauth2_scheme)], supabase: Annotated[Client, Depends(get_supabase)], ): try: res = get_user_response(token, supabase) if res is None: raise UNAUTHORIZED email: str = res.user.id return email except: raise UNAUTHORIZED async def get_role( token: Annotated[str, Depends(oauth2_scheme)], supabase: Annotated[Client, Depends(get_supabase)], ): try: res = get_user_response(token, supabase) if res is None: raise UNAUTHORIZED role: str = res.user.user_metadata.get("role", None) if not role: raise UNAUTHORIZED return role except: raise UNAUTHORIZED