24 lines
882 B
Python

from typing import Dict, Optional
from fastapi import Depends, HTTPException, Request
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
import app.container as container
bearer_scheme = HTTPBearer(auto_error=False)
def auth_dependency(credentials: Optional[HTTPAuthorizationCredentials] = Depends(bearer_scheme)) -> None:
if credentials is None:
raise HTTPException(status_code=401, detail={"code": "unauthorized", "message": "Invalid auth header."})
if credentials.credentials != container.app_state.settings.token:
raise HTTPException(status_code=401, detail={"code": "unauthorized", "message": "Invalid bearer token."})
def caller_identity(request: Request) -> Dict[str, str]:
return {
"ip": request.client.host if request.client else "unknown",
"request_id": request.headers.get("x-request-id", ""),
}