diff --git a/src/repository/base.py b/src/repository/base.py new file mode 100644 index 0000000..7ebe633 --- /dev/null +++ b/src/repository/base.py @@ -0,0 +1,8 @@ +from src.core.database import Base + + +class BaseRepo: + model: type[Base] = None + + def __init__(self, session): + self.session = session diff --git a/src/utils/auth_manager.py b/src/utils/auth_manager.py index 30cfa3b..3883214 100644 --- a/src/utils/auth_manager.py +++ b/src/utils/auth_manager.py @@ -1,9 +1,29 @@ +from datetime import timedelta, datetime, timezone + +import jwt from passlib.context import CryptContext +from src.core.settings import settings + class AuthManger: pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") @classmethod def verify_password(cls, plain_password, hashed_password): - return cls.pwd_context.verify(plain_password, hashed_password) \ No newline at end of file + return cls.pwd_context.verify(plain_password, hashed_password) + + @classmethod + def get_password_hash(cls, password): + return cls.pwd_context.hash(password) + + @classmethod + def create_access_token(cls, data: dict, expires_delta: timedelta | None = None): + to_encode = data.copy() + if expires_delta: + expire = datetime.now(timezone.utc) + expires_delta + else: + expire = datetime.now(timezone.utc) + timedelta(minutes=settings.access_token.expire_minutes) + to_encode.update({"exp": expire}) + encoded_jwt = jwt.encode(to_encode, settings.access_token.secret_key, algorithm=settings.access_token.algorithm) + return encoded_jwt