import os from datetime import datetime, timedelta from passlib.context import CryptContext import jwt pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") JWT_SECRET = os.getenv("JWT_SECRET", "CHANGE_ME_SUPER_SECRET") JWT_ALG = "HS256" JWT_EXPIRE_HOURS = int(os.getenv("JWT_EXPIRE_HOURS", "72")) def hash_password(password: str) -> str: return pwd_context.hash(password) def verify_password(password: str, password_hash: str) -> bool: return pwd_context.verify(password, password_hash) def create_access_token(user_id: int, email: str): exp = datetime.utcnow() + timedelta(hours=JWT_EXPIRE_HOURS) payload = {"sub": str(user_id), "email": email, "exp": exp} return jwt.encode(payload, JWT_SECRET, algorithm=JWT_ALG) def decode_token(token: str): return jwt.decode(token, JWT_SECRET, algorithms=[JWT_ALG])