feat(permissions): B7 — пресеты-профили прав (применение к классу одним кликом)
PRESETS (student): «Полный доступ», «Режим фокуса» (без магазина/испытаний), «Ограниченный» (+ без лаборатории), «Сбросить к стандарту роли». GET /api/permissions/presets + POST /api/permissions/class/:id/preset (admin). Рефактор: общий applyPermsToClass() (карта key→1/0/inherit) — его используют и bulk, и preset. В блоке «Массово по классу» — кнопки пресетов (с подтверждением). Тест: список + применение focus/reset + валидация. Backend pass (3 baseline-Auth). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
const router = require('express').Router();
|
||||
const { authMiddleware, requireRole } = require('../middleware/auth');
|
||||
const { getPermissions, setPermission, getMyPermissions, getUserPermissions, setUserPermission, resetUserPermissions, getPermissionLog, setClassPermission } = require('../controllers/permissionsController');
|
||||
const { getPermissions, setPermission, getMyPermissions, getUserPermissions, setUserPermission, resetUserPermissions, getPermissionLog, setClassPermission, getPresets, applyClassPreset } = require('../controllers/permissionsController');
|
||||
|
||||
router.use(authMiddleware);
|
||||
|
||||
@@ -13,8 +13,10 @@ router.get('/', getPermissions);
|
||||
router.get('/log', getPermissionLog);
|
||||
router.post('/', setPermission);
|
||||
|
||||
/* ── Массово по классу (личные оверрайды всем ученикам класса) ── */
|
||||
/* ── Пресеты-профили + массово по классу (личные оверрайды ученикам класса) ── */
|
||||
router.get('/presets', requireRole('admin'), getPresets);
|
||||
router.post('/class/:id/bulk', requireRole('admin'), setClassPermission);
|
||||
router.post('/class/:id/preset', requireRole('admin'), applyClassPreset);
|
||||
|
||||
/* ── Per-user overrides ── */
|
||||
router.get('/users/:id', getUserPermissions);
|
||||
|
||||
Reference in New Issue
Block a user