25 lines
869 B
Python
25 lines
869 B
Python
"""API admin — conta Carbonio individual (Desk Spec 022)."""
|
|
|
|
from fastapi import APIRouter, Depends, Header, HTTPException
|
|
|
|
from app.config import settings
|
|
from app.services import carbonio, domain_orchestration
|
|
|
|
router = APIRouter(prefix="/admin/accounts", tags=["admin-accounts"])
|
|
|
|
|
|
def require_api_key(x_api_key: str | None = Header(default=None, alias="X-Api-Key")):
|
|
if x_api_key != settings.admin_api_key:
|
|
raise HTTPException(401, "API key inválida")
|
|
return True
|
|
|
|
|
|
@router.post("/{email}/delete", dependencies=[Depends(require_api_key)])
|
|
def delete_account(email: str):
|
|
email = email.lower().strip()
|
|
try:
|
|
return domain_orchestration.delete_carbonio_account(email)
|
|
except ValueError as e:
|
|
raise HTTPException(400, str(e)) from e
|
|
except carbonio.CarbonioError as e:
|
|
raise HTTPException(400, str(e)) from e
|