import { userService } from "./user"; import type { RegisterData, UserResponse } from "./types"; // Роль по умолчанию для новых пользователей const DEFAULT_ROLE_NAME = "manager" as const; /** * Сервис регистрации */ export const registerService = { /** * Регистрация нового пользователя * @param data - данные для регистрации * @param callerRole - роль вызывающего пользователя (если авторизован) */ async register( data: RegisterData, callerRole?: string ): Promise { // Проверить, существует ли пользователь const existingUser = await userService.findByEmail(data.email); if (existingUser) { return null; } // Захешировать пароль const hashedPassword = await userService.hashPassword(data.password); // Определить роль для нового пользователя // Только администраторы могут указывать кастомную роль const role = callerRole === "admin" && data.role ? data.role : DEFAULT_ROLE_NAME; // Создать пользователя const newUser = await userService.create({ email: data.email, password: hashedPassword, fullName: data.fullName, role, }); return userService.sanitize(newUser); }, };