From 63aebbe685629219c1b3c1e0d990714d3a8c1d78 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Thu, 7 Aug 2025 12:15:23 +0200 Subject: don't let route break when semester filter query parameter is empty (and some... Closes #5763 Merge request studip/studip!4400 --- .../JsonApi/Routes/Courses/CoursesByUserIndex.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/classes/JsonApi/Routes/Courses/CoursesByUserIndex.php b/lib/classes/JsonApi/Routes/Courses/CoursesByUserIndex.php index 9f0843a..ae293fd 100644 --- a/lib/classes/JsonApi/Routes/Courses/CoursesByUserIndex.php +++ b/lib/classes/JsonApi/Routes/Courses/CoursesByUserIndex.php @@ -42,7 +42,8 @@ class CoursesByUserIndex extends JsonApiController */ public function __invoke(Request $request, Response $response, array $args): Response { - if (!$user = User::find($args['id'])) { + $user = User::find($args['id']); + if (!$user) { throw new RecordNotFoundException(); } @@ -50,7 +51,8 @@ class CoursesByUserIndex extends JsonApiController throw new AuthorizationFailedException(); } - if ($error = $this->validateFilters()) { + $error = $this->validateFilters(); + if ($error) { throw new BadRequestException($error); } @@ -58,7 +60,7 @@ class CoursesByUserIndex extends JsonApiController $user, $this->getSemesterFilter() ); - list($offset, $limit) = $this->getOffsetAndLimit(); + [$offset, $limit] = $this->getOffsetAndLimit(); return $this->getPaginatedContentResponse( array_slice($courses, $offset, $limit), @@ -71,10 +73,11 @@ class CoursesByUserIndex extends JsonApiController $filtering = $this->getQueryParameters()->getFilteringParameters() ?: []; // semester - if (isset($filtering['semester'])) { - if (!Semester::exists($filtering['semester'])) { - return 'Invalid "semester".'; - } + if ( + !empty($filtering['semester']) + && !Semester::exists($filtering['semester']) + ) { + return 'Invalid "semester".'; } } -- cgit v1.0