feat(access): Фаза 0 — целостность правил доступа + подтверждение массового закрытия
- contentAccess.purgeAccessFor(scope,id) — единая точка очистки content_access (нет FK). deleteClass и _deleteUserTx переведены на неё (убрано дублирование). - Админ-UI: confirm() перед «Закрыть у всех / Закрыть весь» (необратимая массовая операция больше не срабатывает мгновенно). - Новый тест content-access.test.js (9/9): allowlist, ученик>класс, наследование главой хаба, admin/teacher bypass, allowedRefs/filterTextbooks, purgeAccessFor, чистка правил при DELETE класса. Полный backend-набор: 203/206 (3 — baseline Auth). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -223,6 +223,7 @@
|
||||
}
|
||||
|
||||
async function bulk(allow) {
|
||||
if (!allow && !confirm(`Закрыть «${_selContent.title}» у всех классов?`)) return;
|
||||
const classes = _targets.classes || [];
|
||||
try {
|
||||
await Promise.all(classes.map(c =>
|
||||
@@ -310,6 +311,7 @@
|
||||
}
|
||||
|
||||
async function classBulk(allow) {
|
||||
if (!allow && !confirm(`Закрыть весь контент у класса «${_selClass.name}»?`)) return;
|
||||
const all = [...(_catalog.textbooks || []).map(it => ['textbook', it[keyName('textbook')]]),
|
||||
...(_catalog.exams || []).map(it => ['exam', it[keyName('exam')]])];
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user