data-extract / app /core /auth.py
validops-east-1's picture
feat: updated
936f0bf
Raw
History Blame Contribute Delete
644 Bytes
from __future__ import annotations
import secrets
from fastapi import Security
from fastapi.security import APIKeyHeader
from app.core.config import settings
from app.core.exceptions import AuthenticationError
_api_key_header = APIKeyHeader(name="X-API-Key", auto_error=False)
async def require_api_key(api_key: str | None = Security(_api_key_header)) -> str:
if not settings.API_KEY:
return api_key or ""
if not api_key:
raise AuthenticationError("X-API-Key header is required")
if not secrets.compare_digest(api_key, settings.API_KEY):
raise AuthenticationError("Invalid API key")
return api_key