feat: добавлен сервис управления пользователями
All checks were successful
Lint project / lint (push) Successful in 55s

- Создан файл services.py в директории lkeep/apps/auth.
- Определен класс UserService для управления пользователями.
- Реализован метод register_user для регистрации нового пользователя.
- Использованы зависимости UserManager и AuthHandler.
- Добавлены необходимые импорты из модулей schemas, managers и handlers.
This commit is contained in:
proDream 2025-01-12 13:00:36 +04:00
parent aec3f41f4f
commit d3b2f4d71a

View File

@ -0,0 +1,48 @@
"""
Проект: Lkeep
Автор: Иван Ашихмин
Год: 2025
Специально для проекта "Код на салфетке"
https://pressanybutton.ru/category/servis-na-fastapi/
"""
from fastapi import Depends
from lkeep.apps.auth.handlers import AuthHandler
from lkeep.apps.auth.managers import UserManager
from lkeep.apps.auth.schemas import CreateUser, RegisterUser, UserReturnData
class UserService:
"""
Класс для управления пользователями.
"""
def __init__(
self, manager: UserManager = Depends(UserManager), handler: AuthHandler = Depends(AuthHandler)
) -> None:
"""
Инициализирует экземпляр класса, используя зависимости для управления пользователями и авторизации.
:param manager: Управитель пользователей, отвечающий за CRUD-операции над пользователями.
:type manager: UserManager
:param handler: Обработчик аутентификации и авторизации, который используется для проверки доступа к ресурсам.
:type handler: AuthHandler
"""
self.manager = manager
self.handler = handler
async def register_user(self, user: RegisterUser) -> UserReturnData:
"""
Регистрирует нового пользователя в системе.
:param user: Данные для регистрации пользователя.
:type user: RegisterUser
:return: Данные зарегистрированного пользователя.
:rtype: UserReturnData
"""
hashed_password = await self.handler.get_password_hash(user.password)
new_user = CreateUser(email=user.email, hashed_password=hashed_password)
return await self.manager.create_user(user=new_user)