
# Conflicts: # backend/src/middleware/auth/checks/auth-checks.ts # backend/src/middleware/auth/checks/class-auth-checks.ts # backend/src/routes/teachers.ts # frontend/src/views/assignments/UserAssignments.vue
38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import express from 'express';
|
|
import {
|
|
createTeacherHandler,
|
|
deleteTeacherHandler,
|
|
getAllTeachersHandler,
|
|
getStudentJoinRequestHandler,
|
|
getTeacherClassHandler,
|
|
getTeacherHandler,
|
|
getTeacherStudentHandler,
|
|
updateStudentJoinRequestHandler,
|
|
} from '../controllers/teachers.js';
|
|
import invitationRouter from './teacher-invitations.js';
|
|
import { adminOnly } from '../middleware/auth/checks/auth-checks.js';
|
|
import { preventImpersonation } from '../middleware/auth/checks/user-auth-checks.js';
|
|
import { onlyAllowTeacherOfClass } from '../middleware/auth/checks/class-auth-checks.js';
|
|
const router = express.Router();
|
|
|
|
// Root endpoint used to search objects
|
|
router.get('/', adminOnly, getAllTeachersHandler);
|
|
|
|
router.post('/', adminOnly, createTeacherHandler);
|
|
|
|
router.get('/:username', preventImpersonation, getTeacherHandler);
|
|
|
|
router.delete('/:username', preventImpersonation, deleteTeacherHandler);
|
|
|
|
router.get('/:username/classes', preventImpersonation, getTeacherClassHandler);
|
|
|
|
router.get('/:username/students', preventImpersonation, getTeacherStudentHandler);
|
|
|
|
router.get('/:username/joinRequests/:classId', onlyAllowTeacherOfClass, getStudentJoinRequestHandler);
|
|
|
|
router.put('/:username/joinRequests/:classId/:studentUsername', onlyAllowTeacherOfClass, updateStudentJoinRequestHandler);
|
|
|
|
// Invitations to other classes a teacher received
|
|
router.use('/invitations', invitationRouter);
|
|
|
|
export default router;
|