be4d43105e
Node.js/Express backend + vanilla JS frontend. Features: real-time collaborative whiteboard (SSE), multi-page support, LaTeX formulas, shapes/connectors, coordinate systems, number lines, compass, zoom/pan, Catmull-Rom pencil smoothing, ruler/protractor with rotation & resize controls, minimap navigation overlay, auto-measurements, multi-page thumbnails sidebar, PNG export, page templates. Student/teacher workflows: classes, assignments, library, dashboard. Mobile responsive. SQLite (better-sqlite3). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
945 B
JavaScript
19 lines
945 B
JavaScript
const router = require('express').Router();
|
|
const multer = require('multer');
|
|
const { authMiddleware, requireRole, requirePermission } = require('../middleware/auth');
|
|
const { list, create, duplicate, update, remove, importCSV } = require('../controllers/questionController');
|
|
|
|
const csvUpload = multer({ storage: multer.memoryStorage(), limits: { fileSize: 2 * 1024 * 1024 } });
|
|
|
|
router.use(authMiddleware);
|
|
router.use(requireRole('admin', 'teacher'));
|
|
|
|
router.get('/', list);
|
|
router.post('/import', requirePermission('questions.manage'), csvUpload.single('file'), importCSV);
|
|
router.post('/', requirePermission('questions.manage'), create);
|
|
router.post('/:id/copy', requirePermission('questions.manage'), duplicate);
|
|
router.put('/:id', requirePermission('questions.manage'), update);
|
|
router.delete('/:id', requireRole('admin', 'teacher'), requirePermission('questions.delete'), remove);
|
|
|
|
module.exports = router;
|