Spaces:
Running
Running
from jose import jwt | |
import os | |
from dotenv import load_dotenv | |
from datetime import datetime, timedelta | |
load_dotenv() | |
SECRET_KEY = os.getenv("SECRET_KEY") | |
ALGORITHM = os.getenv("ALGORITHM") | |
def encode_jwt(user_id: str, access_token: str, expires_delta: timedelta = timedelta(days=130)) -> str: | |
"""Encode user_id and access_token into a JWT.""" | |
payload = { | |
"user_id": user_id, | |
"access_token": access_token, | |
"exp": datetime.now() + expires_delta # Expiration time | |
} | |
return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM) | |
def decode_jwt(encoded: str) -> tuple[str, str]: | |
"""Decode the JWT back into user_id and access_token.""" | |
try: | |
payload = jwt.decode(encoded, SECRET_KEY, algorithms=[ALGORITHM]) | |
return payload["user_id"], payload["access_token"] | |
except jwt.JWTError as e: | |
raise ValueError(f"Invalid or expired token: {str(e)}") | |