| from fastapi import Header, HTTPException, Request, status |
|
|
| from app.services.container import ServiceContainer |
|
|
|
|
| def get_container(request: Request) -> ServiceContainer: |
| container = getattr(request.app.state, "container", None) |
| if container is None: |
| raise HTTPException( |
| status_code=status.HTTP_503_SERVICE_UNAVAILABLE, |
| detail="Service container is not initialized", |
| ) |
| return container |
|
|
|
|
| def verify_admin_api_key( |
| request: Request, |
| x_admin_api_key: str | None = Header(default=None, alias="X-Admin-Api-Key"), |
| ) -> None: |
| expected = get_container(request).settings.admin_api_key |
| if not x_admin_api_key or x_admin_api_key != expected: |
| raise HTTPException( |
| status_code=status.HTTP_401_UNAUTHORIZED, |
| detail="Invalid admin API key", |
| ) |
|
|