/
burevol
/
GymAssistant
Обзор
Документация
Войти
/
burevol
/
GymAssistant
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
utils/crypto.py
42 строки
2 KB
Alexander Maximov
First commit
07 май 2025, 23:23
07 май 2025, 23:23
38f145a
Код
Авторство
О чём код?
import os from datetime import datetime, timedelta from typing import Union from passlib.context import CryptContext from fastapi.security import OAuth2PasswordBearer from jose import jwt from utils.models import UserInDB class Crypto: def __init__(self) -> None: self.pwd_context: CryptContext = CryptContext(schemes=["bcrypt"], deprecated="auto") self.oauth2_scheme: OAuth2PasswordBearer = OAuth2PasswordBearer(tokenUrl="token") self.SECRET_KEY = os.getenv("SECRET_KEY") self.ALGORITHM = os.getenv("ALGORITHM") self.ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES")) def verify_password(self, plain_password: str, hashed_password: str) -> bool: return self.pwd_context.verify(plain_password, hashed_password) def get_password_hash(self, password: str) -> str: return self.pwd_context.hash(password) def create_access_token(self, data: dict, expires_delta: timedelta or None = None) -> str: to_encode = data.copy() if expires_delta: expire = datetime.utcnow() + expires_delta else: expire = datetime.utcnow() + timedelta(minutes=15) to_encode.update({"exp": expire}) encoded_jwt = jwt.encode(to_encode, self.SECRET_KEY, algorithm=self.ALGORITHM) return encoded_jwt def authenticate_user(self, user: UserInDB, password: str) -> Union[bool, UserInDB]: if not user: return False if not self.verify_password(password, user.hashed_password): return False return user