Download backend/qkernel/auth.py from metarm/QMetaRam: direct link, hf CLI and curl.
- Browser
- Download file 887 Bytes
-
https://huggingface.co/metarm/QMetaRam/resolve/main/backend/qkernel/auth.py
- Command line
-
hf download hf://metarm/QMetaRam/backend/qkernel/auth.py
-
curl -L -o auth.py https://huggingface.co/metarm/QMetaRam/resolve/main/backend/qkernel/auth.py
887 Bytes
| import os | |
| import time | |
| import logging | |
| from typing import Any | |
| import jwt | |
| logger = logging.getLogger("qkernel.auth") | |
| SECRET = os.getenv("JWT_SECRET", "qmetaram-dev-secret-change-in-prod") | |
| ALGORITHM = "HS256" | |
| TOKEN_TTL = 86400 | |
| def create_token(user_id: str, extra: dict | None = None) -> str: | |
| payload = { | |
| "user_id": user_id, | |
| "iat": int(time.time()), | |
| "exp": int(time.time()) + TOKEN_TTL, | |
| } | |
| if extra: | |
| payload.update(extra) | |
| return jwt.encode(payload, SECRET, algorithm=ALGORITHM) | |
| def verify_token(token: str) -> dict[str, Any] | None: | |
| try: | |
| payload = jwt.decode(token, SECRET, algorithms=[ALGORITHM]) | |
| return payload | |
| except jwt.ExpiredSignatureError: | |
| logger.warning("Expired token") | |
| return None | |
| except jwt.InvalidTokenError as e: | |
| logger.warning("Invalid token: %s", e) | |
| return None | |