28 lines
794 B
Python
28 lines
794 B
Python
import secrets
|
|
|
|
from fastapi import Depends, HTTPException, status
|
|
from fastapi.security import HTTPBasic, HTTPBasicCredentials
|
|
|
|
from app.config import get_settings
|
|
|
|
security = HTTPBasic()
|
|
|
|
|
|
async def require_dns_setup_auth(
|
|
credentials: HTTPBasicCredentials = Depends(security),
|
|
) -> None:
|
|
settings = get_settings()
|
|
username_ok = secrets.compare_digest(
|
|
credentials.username,
|
|
settings.dns_setup_username,
|
|
)
|
|
password_ok = secrets.compare_digest(
|
|
credentials.password,
|
|
settings.dns_setup_password,
|
|
)
|
|
if not (username_ok and password_ok):
|
|
raise HTTPException(
|
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
|
detail="Invalid DNS setup credentials.",
|
|
headers={"WWW-Authenticate": "Basic"},
|
|
)
|