24 lines
882 B
Python
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", ""),
|
|
}
|