Spaces:
Sleeping
Sleeping
from datetime import datetime, timedelta | |
from typing import Optional | |
from jose import JWTError, jwt | |
from passlib.context import CryptContext | |
from schemas.auth import TokenData | |
from config import settings | |
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") | |
SECRET_KEY = settings.SECRET_KEY | |
ALGORITHM = settings.ALGORITHM | |
ACCESS_TOKEN_EXPIRE_MINUTES = settings.ACCESS_TOKEN_EXPIRE_MINUTES | |
def decode_token(token: str): | |
try: | |
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) | |
username: str = payload.get("sub") | |
user_id: str = payload.get("user_id") | |
if username is None and user_id is None: | |
return None | |
token_data = TokenData(username=username, user_id=user_id) | |
except JWTError: | |
return None | |
return token_data |