import jwt import os from datetime import datetime, timedelta, timezone from dotenv import load_dotenv load_dotenv() SECRET_KEY = os.getenv("SECRET_KEY") def generate_jwt(user_id, username, email): payload = { "user_id": str(user_id), "username": username, "email": email, "exp": datetime.now(timezone.utc) + timedelta(days=7), "iat": datetime.now(timezone.utc) } return jwt.encode(payload, SECRET_KEY, algorithm="HS256") def decode_jwt(token): try: payload = jwt.decode(token, SECRET_KEY, algorithms=["HS256"]) return payload except jwt.ExpiredSignatureError: raise Exception("Token has expired") except jwt.InvalidTokenError: raise Exception("Invalid token")