feat(prep): мастер-флаг подготовки к направлению (ЦТ) + коллекции колод — бэкенд
Система «готовится к ЦТ»: флаг student_prep(user_id,track) открывает ученику ВЕСЬ контент трека (карточки + курс + пробники) динамически, без материализации. - мигр.078: таблица student_prep + flashcard_decks.collection + разметка ЦТ-колод 'ct-math' - services/prepTracks.js: реестр треков (трек→коллекция/курсы/экзамены), устойчив до миграции - contentAccess.resolve/allowedRefs: учитывают мастер-флаг (явный запрет ученика побеждает) - flashcardController.deckAccess/listDecks: колоды коллекции открыты по флагу - prepController + /api/prep: учитель (своим) и админ ставят/снимают флаг (ученику/классу) - js/api.js: LS.prep* обёртки Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
/* /api/prep — управление мастер-флагом «подготовка к направлению».
|
||||
* Все роуты под authMiddleware. Мутации/чтение чужого статуса — учитель (своих)
|
||||
* или админ (проверка владения в контроллере: canManageStudent/canManageClass). */
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const prep = require('../controllers/prepController');
|
||||
const { authMiddleware, requireRole } = require('../middleware/auth');
|
||||
|
||||
router.use(authMiddleware);
|
||||
|
||||
router.get ('/tracks', prep.listTracks); // справочник направлений (любой авторизованный)
|
||||
router.get ('/me', prep.myTracks); // свой статус (ученик)
|
||||
|
||||
// Управление флагами учеников/классов — только учитель/админ (владение — в контроллере).
|
||||
router.get ('/student/:id', requireRole('teacher', 'admin'), prep.studentTracks);
|
||||
router.post ('/student/:id', requireRole('teacher', 'admin'), prep.setStudent);
|
||||
router.delete('/student/:id', requireRole('teacher', 'admin'), prep.unsetStudent);
|
||||
router.get ('/class/:id', requireRole('teacher', 'admin'), prep.classStatus);
|
||||
router.post ('/class/:id', requireRole('teacher', 'admin'), prep.setClass);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user