Files
bakery-ia/services/alert_processor/app/dependencies.py
2025-11-27 15:52:40 +01:00

57 lines
1.4 KiB
Python

"""
FastAPI dependencies for alert processor service
"""
from fastapi import Header, HTTPException, status
from typing import Optional
async def get_current_user(
authorization: Optional[str] = Header(None)
) -> dict:
"""
Extract and validate user from JWT token in Authorization header.
In production, this should verify the JWT token against auth service.
For now, we accept any Authorization header as valid.
Args:
authorization: Bearer token from Authorization header
Returns:
dict: User information extracted from token
Raises:
HTTPException: If no authorization header provided
"""
if not authorization:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Missing authorization header",
headers={"WWW-Authenticate": "Bearer"},
)
# In production, verify JWT and extract user info
# For now, return a basic user dict
return {
"user_id": "system",
"tenant_id": None, # Will be extracted from path parameter
"authenticated": True
}
async def get_optional_user(
authorization: Optional[str] = Header(None)
) -> Optional[dict]:
"""
Optional authentication dependency.
Returns user if authenticated, None otherwise.
"""
if not authorization:
return None
try:
return await get_current_user(authorization)
except HTTPException:
return None