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)}")