from fastapi import Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer import auth_utils async def get_current_user(token: str = Depends(auth_utils.oauth2_scheme)): payload = auth_utils.decode_token(token) if not payload: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) return payload async def require_admin(current_user: dict = Depends(get_current_user)): if current_user.get("role") != 'admin': raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Admin role required" ) return current_user async def get_current_user_optional(token: str = Depends(auth_utils.oauth2_scheme_optional)): if not token: return None return auth_utils.decode_token(token)