File size: 1,263 Bytes
21db53c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from typing import Annotated

from fastapi import HTTPException
from fastapi.params import Header, Depends

from app.config import config


def verify_access_token(token: str | None) -> bool:
    return (not config.access_protected) or (token is not None and token == config.access_token)


def permissive_access_token_verify(
        x_access_token: Annotated[str | None, Header(
            description="Access token set in configuration (if access_protected is enabled)")] = None) -> bool:
    return verify_access_token(x_access_token)


def force_access_token_verify(token_passed: Annotated[bool, Depends(permissive_access_token_verify)]):
    if not token_passed:
        raise HTTPException(status_code=401, detail="Access token is not present or invalid.")


def permissive_admin_token_verify(
        x_admin_token: Annotated[str | None, Header(
            description="Admin token set in configuration (if admin_api_enable is enabled)")] = None) -> bool:
    return config.admin_api_enable and x_admin_token == config.admin_token


def force_admin_token_verify(token_passed: Annotated[bool, Depends(permissive_admin_token_verify)]):
    if not token_passed:
        raise HTTPException(status_code=401, detail="Admin token is not present or invalid.")