File size: 967 Bytes
6c24b50
 
 
f02b0c0
6c24b50
 
 
 
 
f02b0c0
6c24b50
 
 
f02b0c0
6c24b50
 
c28ae12
6c24b50
f02b0c0
 
6c24b50
 
f02b0c0
6c24b50
 
f02b0c0
6c24b50
 
 
 
 
 
f02b0c0
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
29
30
31
32
33
34
from __future__ import annotations

from fastapi import HTTPException, Security, status
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer

from app.config import get_settings
from app.core.logger import get_logger

_logger = get_logger(__name__)
_security = HTTPBearer(auto_error=False)


async def require_api_key(
    credentials: HTTPAuthorizationCredentials | None = Security(_security),
) -> str:
    settings = get_settings()
    token = settings.api_key

    if not credentials:
        _logger.warning("Missing Authorization header")
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Missing Authorization header",
        )

    if credentials.credentials != token:
        _logger.warning("Invalid API key provided")
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid API key",
        )

    return credentials.credentials