Spaces:
Sleeping
Sleeping
File size: 847 Bytes
009f914 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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]) |