QMetaRam / backend /qkernel /auth.py
metarm's picture
Upload folder using huggingface_hub (part 4)
945aae0 verified
Raw History Blame Contribute Delete
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