| from fastapi import HTTPException, Depends | |
| from fastapi.security import APIKeyQuery | |
| from typing import Annotated, Optional | |
| import os | |
| import uuid | |
| AUTH_TOKEN = os.getenv("AUTH_TOKEN") | |
| api_key_query = APIKeyQuery(name="token", auto_error=False) | |
| async def verify_token(token: Annotated[str, Optional[str], Depends(api_key_query)]): | |
| if not AUTH_TOKEN: | |
| raise HTTPException( | |
| status_code=500, | |
| detail="AUTH_TOKEN not configured on server" | |
| ) | |
| if not token: | |
| raise HTTPException( | |
| status_code=401, | |
| detail="Token is required" | |
| ) | |
| try: | |
| uuid.UUID(token) | |
| except ValueError: | |
| raise HTTPException( | |
| status_code=400, | |
| detail="Invalid token format. Token must be a valid UUID" | |
| ) | |
| if token != AUTH_TOKEN: | |
| raise HTTPException( | |
| status_code=401, | |
| detail="Invalid token" | |
| ) | |
| return token |