feat(access): Фаза 1c — видимость курсов по классам (Фаза 1 завершена)
Миграция 052: мост «открыть все опубликованные курсы всем существующим классам» (тип 'course' уже в CHECK из 051). courseController.list/search фильтруют курсы для НЕпривилегированных по allowedRefs(uid,'course') (content_ref = courses.id как TEXT); admin/teacher — все. /api/access/catalog отдаёт курсы; CONTENT_TYPES в админ-UI = textbook,exam,sim,course → курсы управляются во всех режимах «Доступ». Тест course-access 4/4 (allowlist+класс+privileged+каталог). Полный набор: 213 pass. ВАЖНО: новый опубликованный курс по умолчанию закрыт (allowlist) — открыть классам в админке. Мост сохранил видимость текущих опубликованных курсов у существующих классов. class_courses остаётся для назначений с дедлайном (сверх видимости). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
-- 052_course_access_bridge.sql
|
||||
-- Фаза 1c: видимость курсов по классам через content_access (тип 'course' уже
|
||||
-- разрешён CHECK-ом из миграции 051). Мост: открываем все ОПУБЛИКОВАННЫЕ курсы
|
||||
-- всем существующим классам — чтобы переход на allowlist не отнял доступ к тому,
|
||||
-- что ученики видят сейчас. content_ref = courses.id (как TEXT).
|
||||
--
|
||||
-- После этой миграции новый опубликованный курс по умолчанию закрыт — открыть
|
||||
-- классам через админ-панель «Доступ». Видимость управляется в content_access;
|
||||
-- таблица class_courses остаётся для назначений с дедлайном (это сверх видимости).
|
||||
|
||||
INSERT OR IGNORE INTO content_access (content_type, content_ref, scope, target_id, allow)
|
||||
SELECT 'course', CAST(c.id AS TEXT), 'class', cl.id, 1
|
||||
FROM courses c CROSS JOIN classes cl
|
||||
WHERE c.is_published = 1;
|
||||
Reference in New Issue
Block a user