Spaces:
Running
Running
| 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]) |