// Обёртка регистрации роутов Data-Insight2 (финансы v2) в iistwin. // Все DI2-роуты проходят через auth-gate: JWT + право finance.manage. import type { Express } from "express"; import express from "express"; import { authenticateToken, requirePermission } from "../middleware/auth.middleware"; import { registerRoutes } from "./routes"; import { registerNdsRoutes } from "./nds.routes"; import { startAuditScheduler } from "./audit-scheduler"; const DI2_PREFIXES = [ "/api/income", "/api/income-categories", "/api/expenses", "/api/expense-categories", "/api/debt", "/api/di2", "/api/profitability", "/api/heatmap", "/api/planning", "/api/salary", "/api/audit", "/api/calculations", "/api/connection", "/api/db", "/api/table-config", "/api/table-settings", "/api/overrides", "/api/tags", "/api/tag-assignments", "/api/cache", "/api/refresh-all", "/api/admin", "/api/auth/google", "/api/ai", "/api/telegram", ]; export async function registerDi2Routes(app: Express): Promise { const router = express.Router(); // Auth-gate: DI2-API только для авторизованных с правом finance.manage. // Стоит ПЕРЕД регистрацией роутов DI2 на этом же роутере. router.use((req, res, next) => { if (!DI2_PREFIXES.some(p => req.path.startsWith(p))) { return next(); } authenticateToken(req, res, (err?: unknown) => { if (err) return next(err); requirePermission("finance.manage")(req, res, next); }); }); await registerRoutes(null as any, router as any); registerNdsRoutes(router as any); app.use(router); // Планировщик аудита целостности (03:00 МСК) — запускается один раз благодаря // флагу schedulerStarted внутри startAuditScheduler. startAuditScheduler(); }