Add basic authentication helper

Этот коммит содержится в:
Виктор
2026-05-08 04:13:26 +09:00
родитель 685ffe4b5f
Коммит 91c33f698d
+28
Просмотреть файл
@@ -0,0 +1,28 @@
import secrets
from fastapi import Depends, HTTPException, status
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from app.core import get_settings
security = HTTPBasic(auto_error=False)
def require_auth(credentials: HTTPBasicCredentials | None = Depends(security)) -> str:
settings = get_settings()
if not settings.auth_enabled:
return 'auth-disabled'
if credentials is None:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail='Authentication required',
headers={'WWW-Authenticate': 'Basic'},
)
username_ok = secrets.compare_digest(credentials.username, settings.admin_username)
password_ok = secrets.compare_digest(credentials.password, settings.admin_password)
if not username_ok or not password_ok:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail='Invalid username or password',
headers={'WWW-Authenticate': 'Basic'},
)
return credentials.username