From d3b2f4d71ad96a72164317aedb2105476a3d110a Mon Sep 17 00:00:00 2001 From: proDream Date: Sun, 12 Jan 2025 13:00:36 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=20=D1=83?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Создан файл services.py в директории lkeep/apps/auth. - Определен класс UserService для управления пользователями. - Реализован метод register_user для регистрации нового пользователя. - Использованы зависимости UserManager и AuthHandler. - Добавлены необходимые импорты из модулей schemas, managers и handlers. --- lkeep/apps/auth/services.py | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lkeep/apps/auth/services.py diff --git a/lkeep/apps/auth/services.py b/lkeep/apps/auth/services.py new file mode 100644 index 0000000..5fe5343 --- /dev/null +++ b/lkeep/apps/auth/services.py @@ -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)