Spaces:
Sleeping
Sleeping
Download admin_auth.py from chechoguz/edadometro: direct link, hf CLI and curl.
- Browser
- Download file 1.17 kB
-
https://huggingface.co/spaces/chechoguz/edadometro/resolve/main/admin_auth.py
- Command line
-
hf download hf://spaces/chechoguz/edadometro/admin_auth.py
-
curl -L -o admin_auth.py https://huggingface.co/spaces/chechoguz/edadometro/resolve/main/admin_auth.py
1.17 kB
| """Autenticación simple para panel de administrador.""" | |
| from __future__ import annotations | |
| import hashlib | |
| import hmac | |
| import os | |
| import secrets | |
| import time | |
| ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "") | |
| TOKEN_TTL_SECONDS = 24 * 60 * 60 | |
| def admin_configured() -> bool: | |
| return bool(ADMIN_PASSWORD) | |
| def verify_password(password: str) -> bool: | |
| if not ADMIN_PASSWORD: | |
| return False | |
| return secrets.compare_digest(password, ADMIN_PASSWORD) | |
| def create_token() -> str: | |
| ts = str(int(time.time())) | |
| sig = hmac.new( | |
| ADMIN_PASSWORD.encode(), | |
| f"admin:{ts}".encode(), | |
| hashlib.sha256, | |
| ).hexdigest() | |
| return f"{ts}.{sig}" | |
| def verify_token(token: str) -> bool: | |
| if not ADMIN_PASSWORD or not token: | |
| return False | |
| try: | |
| ts_str, sig = token.split(".", 1) | |
| ts = int(ts_str) | |
| except (ValueError, AttributeError): | |
| return False | |
| if time.time() - ts > TOKEN_TTL_SECONDS: | |
| return False | |
| expected = hmac.new( | |
| ADMIN_PASSWORD.encode(), | |
| f"admin:{ts_str}".encode(), | |
| hashlib.sha256, | |
| ).hexdigest() | |
| return secrets.compare_digest(sig, expected) | |