import { userService } from "./user"; import { sessionService } from "./session"; import type { LoginResult, SessionMetadata } from "./types"; /** * Сервис авторизации */ export const loginService = { /** * Авторизация пользователя */ async login( email: string, password: string, metadata: SessionMetadata ): Promise { // Найти пользователя по email const user = await userService.findByEmail(email); if (!user) { return null; } // Проверить пароль const isPasswordValid = await userService.verifyPassword( password, user.password ); if (!isPasswordValid) { return null; } // Создать новую сессию const { sessionId, accessToken } = await sessionService.create( user.id, metadata ); // Получить пользователя с полными данными (филиал и компания) const userWithRelations = await userService.findByIdWithRelations(user.id); // Вычислить дату истечения токена const expiresAt = new Date(); expiresAt.setDate(expiresAt.getDate() + 7); return { user: userWithRelations ? userService.sanitizeWithRelations(userWithRelations) : userService.sanitize(user), session: { id: sessionId, token: accessToken, expiresAt: expiresAt.toISOString(), }, }; }, };