visus-plus/api/app/infrastructure/auth_service.py

34 lines
946 B
Python

import datetime
import jwt
from sqlalchemy.ext.asyncio import AsyncSession
from app.application.users_repository import UsersRepository
from app.settings import get_auth_data
class AuthService:
def __init__(self, db: AsyncSession):
self.repository = UsersRepository(db)
async def authenticate_user(self, login: str, password: str):
user = await self.repository.get_by_login(login)
if not user:
return None
if not user.check_password(password):
return None
return user
@staticmethod
def create_access_token(data: dict) -> str:
to_encode = data.copy()
expire = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=30)
to_encode.update({"exp": expire})
auth_data = get_auth_data()
encode_jwt = jwt.encode(to_encode, auth_data['secret_key'], algorithm=auth_data['algorithm'])
return encode_jwt