Spaces:
Running
Running
File size: 987 Bytes
d646dd7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | """API Key authentication dependency."""
import secrets
from fastapi import HTTPException, Header
from app.config import settings
async def verify_api_key(x_api_key: str = Header(default="")) -> str:
"""Verify the X-API-Key header against the configured key.
Skips verification if API_KEY is empty (dev mode).
"""
if not settings.API_KEY or settings.API_KEY == "change-me":
return "dev"
if not secrets.compare_digest(x_api_key, settings.API_KEY):
raise HTTPException(status_code=401, detail="Invalid API key")
return "ok"
async def verify_worker_api_key(x_api_key: str = Header(default="")) -> str:
"""Verify the key used by local post-processing workers."""
expected = settings.WORKER_API_KEY or settings.API_KEY
if not expected or expected == "change-me":
return "dev"
if not secrets.compare_digest(x_api_key, expected):
raise HTTPException(status_code=401, detail="Invalid worker API key")
return "ok"
|