security(users): SafeUser — passwordHash/токены не уходят клиенту

Шаг 0.8 плана production-готовности:
- shared/schema.ts: тип SafeUser + safeUserColumns
- getUsersByOrganization, listUsers, searchUsers, getUsersByRole,
  getUsersByOrgRoleId, documents getUser — без чувствительных колонок
- sync (initial/delta), автоматизации ctx.users.list, MCP list_users — sanitized
This commit is contained in:
2026-09-07 21:03:00 +03:00
parent 26419f395f
commit cf6f937108
12 changed files with 79 additions and 51 deletions

View File

@@ -1,5 +1,5 @@
import { storage } from "../storage";
import type { NotificationEvent, Bot, Task, User, TaskMessage } from "@shared/schema";
import type { NotificationEvent, Bot, Task, SafeUser, TaskMessage } from "@shared/schema";
import { notificationService, EVENT_TYPES } from "./notification.service";
import { webhookService } from "./webhook.service";
import { generateBotServiceToken } from "../utils/jwt";
@@ -23,7 +23,7 @@ type MessageAttachment = { url: string; name: string; size: number; mimeType?: s
export interface SendTaskMessageParams {
task: Task; // задача (уже загружена и проверена вызывающим кодом)
user?: User; // автор сообщения; необязателен, если передан botId
user?: SafeUser; // автор сообщения; необязателен, если передан botId
botId?: number | null; // сообщение от бота: authorId=null, botId, messageType='bot'
organizationId: number;
message: string;