create AuthManager

This commit is contained in:
IluaAir
2025-07-06 12:10:58 +03:00
parent 4de11f4149
commit 459969f2be
2 changed files with 29 additions and 1 deletions

8
src/repository/base.py Normal file
View File

@@ -0,0 +1,8 @@
from src.core.database import Base
class BaseRepo:
model: type[Base] = None
def __init__(self, session):
self.session = session

View File

@@ -1,5 +1,10 @@
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")
@@ -7,3 +12,18 @@ class AuthManger:
@classmethod
def verify_password(cls, plain_password, hashed_password):
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