page-templates: insertTemplateReferencesForPages (кросс-workspace guard на дублировании/импорте) без тестов #80
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Найдено в multi-aspect code review всех изменений с коммита
053a9c0d(ветка develop).Грань: test-coverage · Severity: warning
Где:
apps/server/src/core/page/transclusion/transclusion.service.ts:337Проблема
Новая security-релевантная логика на пути дублирования/импорта (вызов из page.service.ts:835): кандидаты группируются по workspace, выполняется per-workspace existence-запрос, строки вставки пропускают source не из workspace страницы (
if (!inWorkspace?.has(sourcePageId)) continue;). Та же гарантия «нет кросс-workspace ребра», что и в syncPageTemplateReferences, но отдельный путь (multi-workspace map, без диффа против существующих). Спеки покрывают только syncPageTemplateReferences; ветка отбрасывания и группировка не покрыты — регрессия с протечкой кросс-workspace вставки прошла бы CI. (Сейчас вдобавок не исполняется из-за TS2554 — см. issue про спеки transclusion.)Предлагаемый фикс
Юнит-тест (стиль db-стабов из page-template-access.spec.ts): страницы из двух workspace с in- и cross-workspace эмбедами; проверить, что insertMany получает только in-workspace строки и workspaceId каждой строки равен workspace хост-страницы.