OpenTriage_AI / utils /dependencies.py
KrishnaCosmic's picture
deployment
ce673e5
from fastapi import Header, HTTPException, Depends
from .jwt_utils import verify_jwt_token
from config.database import db
from models.user import UserRole
async def get_current_user(authorization: str = Header(None)) -> dict:
"""Get the current authenticated user from JWT token."""
if not authorization or not authorization.startswith('Bearer '):
raise HTTPException(status_code=401, detail="Missing or invalid authorization header")
token = authorization.replace('Bearer ', '')
payload = verify_jwt_token(token)
user = await db.users.find_one({"id": payload['user_id']})
if not user:
raise HTTPException(status_code=401, detail="User not found")
# Convert _id to string for consistent handling
if "_id" in user:
user["_id"] = str(user["_id"])
return user
async def require_maintainer(user: dict = Depends(get_current_user)) -> dict:
"""Require that the current user has maintainer role."""
if user.get('role') != UserRole.MAINTAINER.value:
raise HTTPException(status_code=403, detail="Maintainer access required")
return user