diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 7a2a1d012..8a5797564 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -1259,6 +1259,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) { @@ -1269,6 +1271,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 bcc30bcc9..4f800ece2 100644 --- a/src/views/Submit.vue +++ b/src/views/Submit.vue @@ -57,7 +57,7 @@