49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import express from 'express';
|
|
import {
|
|
addClassStudentHandler,
|
|
addClassTeacherHandler,
|
|
createClassHandler,
|
|
deleteClassHandler,
|
|
deleteClassStudentHandler,
|
|
deleteClassTeacherHandler,
|
|
getAllClassesHandler,
|
|
getClassHandler,
|
|
getClassStudentsHandler,
|
|
getClassTeachersHandler,
|
|
getTeacherInvitationsHandler,
|
|
putClassHandler,
|
|
} from '../controllers/classes.js';
|
|
import assignmentRouter from './assignments.js';
|
|
import { adminOnly, teachersOnly } from '../middleware/auth/checks/auth-checks.js';
|
|
import { onlyAllowIfInClass, onlyAllowIfInClassOrInvited } from '../middleware/auth/checks/class-auth-checks.js';
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', adminOnly, getAllClassesHandler);
|
|
|
|
router.post('/', teachersOnly, createClassHandler);
|
|
|
|
router.get('/:id', onlyAllowIfInClassOrInvited, getClassHandler);
|
|
|
|
router.put('/:id', teachersOnly, onlyAllowIfInClass, putClassHandler);
|
|
|
|
router.delete('/:id', teachersOnly, onlyAllowIfInClass, deleteClassHandler);
|
|
|
|
router.get('/:id/teacher-invitations', teachersOnly, onlyAllowIfInClass, getTeacherInvitationsHandler);
|
|
|
|
router.get('/:id/students', onlyAllowIfInClass, getClassStudentsHandler);
|
|
|
|
router.post('/:id/students', teachersOnly, onlyAllowIfInClass, addClassStudentHandler);
|
|
|
|
router.delete('/:id/students/:username', teachersOnly, onlyAllowIfInClass, deleteClassStudentHandler);
|
|
|
|
router.get('/:id/teachers', onlyAllowIfInClass, getClassTeachersHandler);
|
|
|
|
// De combinatie van deze POST en DELETE endpoints kan lethal zijn
|
|
router.post('/:id/teachers', teachersOnly, onlyAllowIfInClass, addClassTeacherHandler);
|
|
|
|
router.delete('/:id/teachers/:username', teachersOnly, onlyAllowIfInClass, deleteClassTeacherHandler);
|
|
|
|
router.use('/:classid/assignments', assignmentRouter);
|
|
|
|
export default router;
|