setu / api /core /deps.py
khagu's picture
chore: finally untrack large database files
3998131
from typing import Dict
from fastapi import Depends, HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from api.core.security import verify_supabase_token, extract_user_from_token
security = HTTPBearer()
async def get_current_user(
credentials: HTTPAuthorizationCredentials = Depends(security),
) -> Dict:
"""
Dependency to get the current authenticated user from Supabase JWT token.
Raises:
HTTPException: If token is invalid or missing
Returns:
User dictionary with id, email, role, etc.
"""
token = credentials.credentials
payload = verify_supabase_token(token)
user = extract_user_from_token(payload)
return user
async def get_current_admin(user: Dict = Depends(get_current_user)) -> Dict:
"""
Dependency to ensure current user has admin role.
Raises:
HTTPException: If user is not an admin
Returns:
User dictionary
"""
if user.get("role") not in ["admin", "superadmin"]:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Only administrators can access this resource",
)
return user