feat: F1 — panel admin web (FastAPI, solo 127.0.0.1, X-Admin-Token, SSH tunnel)
This commit is contained in:
22
admin/auth.py
Normal file
22
admin/auth.py
Normal file
@@ -0,0 +1,22 @@
|
||||
"""
|
||||
admin/auth.py — Autenticación del panel de administración.
|
||||
|
||||
Token estático via header X-Admin-Token.
|
||||
Si ADMIN_TOKEN no está configurado, el panel rechaza todos los requests.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import secrets
|
||||
|
||||
from fastapi import HTTPException, Request
|
||||
|
||||
|
||||
def require_token(token_esperado: str):
|
||||
"""Devuelve una dependencia FastAPI que valida X-Admin-Token."""
|
||||
async def _check(request: Request) -> None:
|
||||
if not token_esperado:
|
||||
raise HTTPException(status_code=403, detail="Panel no configurado: falta ADMIN_TOKEN")
|
||||
token = request.headers.get("X-Admin-Token", "")
|
||||
if not secrets.compare_digest(token, token_esperado):
|
||||
raise HTTPException(status_code=403, detail="Token inválido")
|
||||
return _check
|
||||
Reference in New Issue
Block a user