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