Add authenticated finance REST API
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
import os
|
||||
import secrets
|
||||
from typing import Annotated
|
||||
from fastapi import Depends, HTTPException
|
||||
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
|
||||
|
||||
bearer = HTTPBearer(auto_error=False, scheme_name='FinanceAPIToken',
|
||||
description='Bearer-Token aus FINANCE_API_TOKEN. Kein Standard-Token.')
|
||||
|
||||
|
||||
def require_token(credentials: Annotated[HTTPAuthorizationCredentials | None, Depends(bearer)]):
|
||||
token = os.environ.get('FINANCE_API_TOKEN', '')
|
||||
if not token.strip() or token == 'change-me':
|
||||
raise HTTPException(503, 'API nicht konfiguriert. FINANCE_API_TOKEN muss gesetzt werden.')
|
||||
if credentials is None or not secrets.compare_digest(credentials.credentials.encode(), token.encode()):
|
||||
raise HTTPException(401, 'Fehlendes oder ungültiges API-Token.', headers={'WWW-Authenticate': 'Bearer'})
|
||||
Reference in New Issue
Block a user