feat(materials): Фаза 6b — раздатка материала ученикам/классу

- POST /api/materials/:id/share {classId|userId} (teacher/admin): создаёт независимую КОПИЮ
  материала каждому ученику класса (source_title «Раздатка: <учитель>») + уведомление через SSE.
- /my-materials: кнопка «Раздать» на карточках (видна учителю/админу) → выбор класса.
- Хелпер LS.shareMaterial. На этом план «Мои материалы» (6 фаз) завершён.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-04 12:26:46 +03:00
parent e793b4ec09
commit f7357adf1e
4 changed files with 77 additions and 6 deletions
+4 -1
View File
@@ -1,11 +1,14 @@
'use strict';
const express = require('express');
const router = express.Router();
const { authMiddleware } = require('../middleware/auth');
const { authMiddleware, requireRole } = require('../middleware/auth');
const c = require('../controllers/studentMaterialsController');
router.use(authMiddleware);
// Teacher hands a material out to a class/student (copies to recipients)
router.post('/:id/share', requireRole('teacher', 'admin'), c.share);
router.get('/', c.list);
router.post('/', c.create);