| from fastapi import Depends, Header | |
| from app.config import Settings, get_settings | |
| from app.errors import OpenAICompatibleError | |
| def require_bearer_auth( | |
| authorization: str | None = Header(default=None), | |
| settings: Settings = Depends(get_settings), | |
| ) -> None: | |
| if not settings.require_auth: | |
| return | |
| if not authorization or not authorization.startswith("Bearer "): | |
| raise OpenAICompatibleError( | |
| status_code=401, | |
| message="Missing or invalid Authorization header.", | |
| error_type="invalid_request_error", | |
| code="invalid_api_key", | |
| ) | |
| token = authorization.removeprefix("Bearer ").strip() | |
| if token != settings.api_key: | |
| raise OpenAICompatibleError( | |
| status_code=401, | |
| message="Invalid API key provided.", | |
| error_type="invalid_request_error", | |
| code="invalid_api_key", | |
| ) | |