diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 0cbe6a73e..d3fe43a40 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -1265,6 +1265,8 @@ public function getSubmissions(int $formId, ?string $query = null, ?int $limit = #[ApiRoute(verb: 'GET', url: '/api/v3/forms/{formId}/submissions/{submissionId}')] public function getSubmission(int $formId, int $submissionId): DataResponse|DataDownloadResponse { $form = $this->formsService->getFormIfAllowed($formId, Constants::PERMISSION_RESULTS); + $permissions = $this->formsService->getPermissions($form); + $canSeeAllSubmissions = in_array(Constants::PERMISSION_RESULTS, $permissions, true); $submission = $this->submissionService->getSubmission($submissionId); if ($submission === null) { @@ -1275,6 +1277,10 @@ public function getSubmission(int $formId, int $submissionId): DataResponse|Data throw new OCSBadRequestException('Submission doesn\'t belong to given form'); } + if (!$canSeeAllSubmissions && $submission['userId'] !== $this->currentUser->getUID()) { + throw new OCSForbiddenException('User is not allowed to see submission'); + } + // Append Display Names if (substr($submission['userId'], 0, 10) === 'anon-user-') { // Anonymous User diff --git a/src/views/Submit.vue b/src/views/Submit.vue index 4b9385847..ad0905a10 100644 --- a/src/views/Submit.vue +++ b/src/views/Submit.vue @@ -58,7 +58,10 @@