diff --git a/backend/src/controllers/learning-objects.ts b/backend/src/controllers/learning-objects.ts index 21cf9515..e4318efa 100644 --- a/backend/src/controllers/learning-objects.ts +++ b/backend/src/controllers/learning-objects.ts @@ -9,6 +9,7 @@ import { envVars, getEnvVar } from '../util/envVars.js'; import { FilteredLearningObject, LearningObjectIdentifierDTO, LearningPathIdentifier } from '@dwengo-1/common/interfaces/learning-content'; import { UploadedFile } from 'express-fileupload'; import { AuthenticatedRequest } from '../middleware/auth/authenticated-request'; +import { requireFields } from './error-helper.js'; function getLearningObjectIdentifierFromRequest(req: Request): LearningObjectIdentifierDTO { if (!req.params.hruid) { @@ -22,12 +23,12 @@ function getLearningObjectIdentifierFromRequest(req: Request): LearningObjectIde } function getLearningPathIdentifierFromRequest(req: Request): LearningPathIdentifier { - if (!req.query.hruid) { - throw new BadRequestException('HRUID is required.'); - } + const { hruid, language } = req.params; + requireFields({ hruid }); + return { - hruid: req.params.hruid, - language: (req.query.language as Language) || FALLBACK_LANG, + hruid, + language: (language as Language) || FALLBACK_LANG, }; } diff --git a/backend/src/controllers/learning-paths.ts b/backend/src/controllers/learning-paths.ts index d7c45428..35a40785 100644 --- a/backend/src/controllers/learning-paths.ts +++ b/backend/src/controllers/learning-paths.ts @@ -10,6 +10,7 @@ import { getAssignmentRepository, getGroupRepository } from '../data/repositorie import { AuthenticatedRequest } from '../middleware/auth/authenticated-request.js'; import { LearningPath, LearningPathIdentifier } from '@dwengo-1/common/interfaces/learning-content'; import { getTeacher } from '../services/teachers.js'; +import { requireFields } from './error-helper.js'; /** * Fetch learning paths based on query parameters. @@ -73,6 +74,10 @@ export async function getLearningPaths(req: Request, res: Response): Promise Promise { return async (req, res) => { const path: LearningPath = req.body; + const { hruid: hruidParam, language: languageParam } = req.params; + + requireFields({ hruidParam, languageParam, path }); + const teacher = await getTeacher(req.auth!.username); if (isPut) { if (req.params.hruid !== path.hruid || req.params.language !== path.language) { @@ -88,10 +93,11 @@ export const postLearningPath = postOrPutLearningPath(false); export const putLearningPath = postOrPutLearningPath(true); export async function deleteLearningPath(req: AuthenticatedRequest, res: Response): Promise { - const id: LearningPathIdentifier = { - hruid: req.params.hruid, - language: req.params.language as Language, - }; + const { hruid, language } = req.params; + + requireFields({ hruid, language }); + + const id: LearningPathIdentifier = { hruid, language: language as Language }; const deletedPath = await learningPathService.deleteLearningPath(id); if (deletedPath) { res.json(deletedPath);