Spaces:
Sleeping
Sleeping
| from passlib.context import CryptContext | |
| from jose import JWTError, jwt | |
| from datetime import datetime, timedelta | |
| from typing import Optional | |
| from app.core.config import settings | |
| pwd_context=CryptContext(schemes=["bcrypt"],deprecated="auto") | |
| ALGORITHM="HS256" | |
| ACCESS_TOKEN_EXPIRE_MINUTES=60 | |
| def hash_password(password:str)->str: | |
| return pwd_context.hash(password) | |
| def verify_password(plain_password:str,hashed_password:str)->bool: | |
| return pwd_context.verify(plain_password,hashed_password) | |
| def create_access_token(data:dict,expires_delta:Optional[timedelta]=None)->str: | |
| to_encode=data.copy() | |
| if expires_delta: | |
| expire=datetime.utcnow()+expires_delta | |
| else: | |
| expire=datetime.utcnow()+timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) | |
| to_encode.update({"exp":expire}) | |
| return jwt.encode(to_encode,settings.SECRET_KEY,algorithm=ALGORITHM) | |
| def decode_access_token(token:str)->dict: | |
| try: | |
| return jwt.decode(token,settings.SECRET_KEY,algorithms=[ALGORITHM]) | |
| except JWTError: | |
| return None |