diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php index ae93f908ac8844044bcb2d409b0242b6d554045f..5d6b5cc769dda7826bb9ada762f6de942ef9f3ed 100644 --- a/src/app/document/controllers/DocumentController.php +++ b/src/app/document/controllers/DocumentController.php @@ -132,6 +132,11 @@ class DocumentController public function getById(Request $request, Response $response, array $args) { + $canManageDocuments = PrivilegeController::hasPrivilege(['userId' => $GLOBALS['id'], 'privilege' => 'manage_documents']); + if (!$canManageDocuments && !DocumentController::hasRightById(['id' => $args['id'], 'userId' => $GLOBALS['id'], 'readOnly' => true])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + if (!DocumentController::hasRightById(['id' => $args['id'], 'userId' => $GLOBALS['id'], 'readOnly' => true]) && !PrivilegeController::hasPrivilege(['userId' => $GLOBALS['id'], 'privilege' => 'manage_documents'])) { return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); } @@ -225,12 +230,7 @@ class DocumentController $currentId = $value['user_id']; } } - - $canManageDocuments = PrivilegeController::hasPrivilege(['userId' => $GLOBALS['id'], 'privilege' => 'manage_documents']); - if (!$canManageDocuments && !DocumentController::hasRightById(['id' => $args['id'], 'userId' => $GLOBALS['id'], 'readOnly' => true])) { - return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); - } - + $formattedDocument['readOnly'] = !$canManageDocuments; if ($formattedDocument['readOnly'] && !empty($currentId)) { if ($currentId == $GLOBALS['id']) {