diff --git a/rest/index.php b/rest/index.php index 6d317d4f734b397ae8c3cf24c6f3a852758aab34..d7cdfab3ad122f9c724aed4047551d2d24ce4362 100755 --- a/rest/index.php +++ b/rest/index.php @@ -295,7 +295,6 @@ $app->get('/listTemplates/{id}', \Entity\controllers\ListTemplateController::cla $app->put('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':update'); $app->delete('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':delete'); $app->get('/listTemplates/entities/{entityId}', \Entity\controllers\ListTemplateController::class . ':getByEntityId'); -$app->get('/listTemplates/entities/{entityId}/maarchParapheur', \Entity\controllers\ListTemplateController::class . ':getByEntityIdWithMaarchParapheur'); $app->put('/listTemplates/entityDest/itemId/{itemId}', \Entity\controllers\ListTemplateController::class . ':updateByUserWithEntityDest'); $app->get('/listTemplates/types/{typeId}/roles', \Entity\controllers\ListTemplateController::class . ':getTypeRoles'); $app->put('/listTemplates/types/{typeId}/roles', \Entity\controllers\ListTemplateController::class . ':updateTypeRoles'); diff --git a/src/app/convert/controllers/ConvertPdfController.php b/src/app/convert/controllers/ConvertPdfController.php index ace73a6407f79c38c9bb2dd0e6135428c152f28f..304ac739ab443831afc15110c4bc2c98740a8a11 100755 --- a/src/app/convert/controllers/ConvertPdfController.php +++ b/src/app/convert/controllers/ConvertPdfController.php @@ -191,10 +191,10 @@ class ConvertPdfController $convertedDocument = $convertedDocument[0] ?? null; } else { $convertedDocument = AdrModel::getConvertedDocumentById([ - 'select' => ['docserver_id','path', 'filename', 'fingerprint'], - 'resId' => $args['resId'], - 'collId' => 'attachment', - 'type' => 'PDF' + 'select' => ['docserver_id','path', 'filename', 'fingerprint'], + 'resId' => $args['resId'], + 'collId' => 'attachment', + 'type' => 'PDF' ]); } diff --git a/src/app/entity/controllers/ListTemplateController.php b/src/app/entity/controllers/ListTemplateController.php index 34019d74a9f5af2984b185b785adc09a8e24b49b..52e838ba503d9271d2cd48ddbdd67a55f393f3d6 100755 --- a/src/app/entity/controllers/ListTemplateController.php +++ b/src/app/entity/controllers/ListTemplateController.php @@ -138,7 +138,7 @@ class ListTemplateController } } - $control = ListTemplateController::controlItems(['items' => $body['items']]); + $control = ListTemplateController::controlItems(['items' => $body['items'], 'type' => $body['type']]); if (!empty($control['errors'])) { return $response->withStatus(400)->withJson(['errors' => $control['errors']]); } @@ -204,7 +204,7 @@ class ListTemplateController } } - $control = ListTemplateController::controlItems(['items' => $body['items']]); + $control = ListTemplateController::controlItems(['items' => $body['items'], 'type' => $listTemplate['type']]); if (!empty($control['errors'])) { return $response->withStatus(400)->withJson(['errors' => $control['errors']]); } @@ -307,10 +307,21 @@ class ListTemplateController } } + $itemsRemoved = false; $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => $where, 'data' => $data]); foreach ($listTemplates as $key => $listTemplate) { $listTemplateItems = ListTemplateItemModel::get(['select' => ['*'], 'where' => ['list_template_id = ?'], 'data' => [$listTemplate['id']]]); foreach ($listTemplateItems as $itemKey => $value) { + if ($listTemplate['type'] == 'visaCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'visa_documents', 'userId' => $value['item_id']]) && !PrivilegeController::hasPrivilege(['privilegeId' => 'sign_document', 'userId' => $value['item_id']])) { + unset($listTemplateItems[$itemKey]); + $itemsRemoved = true; + continue; + } elseif ($listTemplate['type'] == 'opinionCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'avis_documents', 'userId' => $value['item_id']])) { + unset($listTemplateItems[$itemKey]); + $itemsRemoved = true; + continue; + } + if ($value['item_type'] == 'entity') { $listTemplateItems[$itemKey]['labelToDisplay'] = Entitymodel::getById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; $listTemplateItems[$itemKey]['descriptionToDisplay'] = ''; @@ -342,63 +353,13 @@ class ListTemplateController } } } - } } $listTemplates[$key]['items'] = $listTemplateItems; } - return $response->withJson(['listTemplates' => $listTemplates]); - } - - public function getByEntityIdWithMaarchParapheur(Request $request, Response $response, array $args) - { - $entity = EntityModel::getById(['select' => ['entity_id'], 'id' => $args['entityId']]); - if (empty($entity)) { - return $response->withStatus(400)->withJson(['errors' => 'Entity does not exist']); - } - - $queryParams = $request->getQueryParams(); - - $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => ['entity_id = ?'], 'data' => [$args['entityId']]]); - - foreach ($listTemplates as $key => $value) { - if ($value['item_type'] == 'entity_id') { - $listTemplates[$key]['labelToDisplay'] = Entitymodel::getByEntityId(['entityId' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; - $listTemplates[$key]['descriptionToDisplay'] = ''; - } else { - $listTemplates[$key]['labelToDisplay'] = UserModel::getLabelledUserById(['login' => $value['item_id']]); - $listTemplates[$key]['descriptionToDisplay'] = UserModel::getPrimaryEntityByUserId(['userId' => $value['item_id']])['entity_label']; - - $userInfos = UserModel::getByLowerLogin(['login' => $value['item_id'], 'select' => ['external_id']]); - $listTemplates[$key]['externalId'] = json_decode($userInfos['external_id'], true); - if (!empty($listTemplates[$key]['externalId']['maarchParapheur'])) { - $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); - if ($loadedXml->signatoryBookEnabled == 'maarchParapheur') { - foreach ($loadedXml->signatoryBook as $signatoryBook) { - if ($signatoryBook->id == "maarchParapheur") { - $url = $signatoryBook->url; - $userId = $signatoryBook->userId; - $password = $signatoryBook->password; - break; - } - } - $curlResponse = CurlModel::execSimple([ - 'url' => rtrim($url, '/') . '/rest/users/'.$listTemplates[$key]['externalId']['maarchParapheur'], - 'basicAuth' => ['user' => $userId, 'password' => $password], - 'headers' => ['content-type:application/json'], - 'method' => 'GET' - ]); - if (empty($curlResponse['response']['user'])) { - unset($listTemplates[$key]['externalId']['maarchParapheur']); - } - } - } - } - } - - return $response->withJson(['listTemplate' => $listTemplates]); + return $response->withJson(['listTemplates' => $listTemplates, 'itemsRemoved' => $itemsRemoved]); } public function updateByUserWithEntityDest(Request $request, Response $response, array $args) @@ -650,8 +611,9 @@ class ListTemplateController private static function controlItems(array $args) { - ValidatorModel::notEmpty($args, ['items']); + ValidatorModel::notEmpty($args, ['items', 'type']); ValidatorModel::arrayType($args, ['items']); + ValidatorModel::stringType($args, ['type']); $destFound = false; foreach ($args['items'] as $item) { @@ -660,18 +622,21 @@ class ListTemplateController } if (empty($item['id'])) { return ['errors' => 'id is empty']; - } - if (empty($item['type'])) { + } elseif (empty($item['type'])) { return ['errors' => 'type is empty']; - } - if (empty($item['mode'])) { + } elseif (empty($item['mode'])) { return ['errors' => 'mode is empty']; } if ($item['item_mode'] == 'dest') { $destFound = true; } + if ($args['type'] == 'visaCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'visa_documents', 'userId' => $item['id']]) && !PrivilegeController::hasPrivilege(['privilegeId' => 'sign_document', 'userId' => $item['id']])) { + return ['errors' => 'item has not enough privileges']; + } elseif ($args['type'] == 'opinionCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'avis_documents', 'userId' => $item['id']])) { + return ['errors' => 'item has not enough privileges']; + } } - return ['success' => 'success']; + return true; } } diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index 0de9ba3d385a42eada3ddab2fd5c1497162c5050..5bfbf653bb0a361cda7b17b877520cfab884c95d 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -450,7 +450,8 @@ class ResController extends ResourceControlController $convertedDocuments = AdrModel::getDocuments([ 'select' => ['type', 'version'], 'where' => ['res_id = ?', 'type in (?)'], - 'data' => [$args['resId'], ['PDF', 'SIGN', 'NOTE']] + 'data' => [$args['resId'], ['PDF', 'SIGN', 'NOTE']], + 'orderBy' => ['versions ASC'] ]); if (empty($convertedDocuments)) { return $response->withJson(['PDF' => $pdfVersions, 'SIGN' => $signedVersions, 'NOTE' => $noteVersions]); diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts index 518dd736d66711cf83dfc5818e46f3886ad922a4..a27d4bd13f60258c6f69ca2d4a353cb8330f3e85 100644 --- a/src/frontend/app/visa/visa-workflow.component.ts +++ b/src/frontend/app/visa/visa-workflow.component.ts @@ -38,6 +38,7 @@ export class VisaWorkflowComponent implements OnInit { filteredPrivateModels: Observable<string[]>; loading: boolean = false; + itemsRemoved: boolean = false; visaModelListNotLoaded: boolean = true; data: any; @@ -95,6 +96,7 @@ export class VisaWorkflowComponent implements OnInit { } }); this.loading = false; + this.itemsRemoved = data.itemsRemoved; } this.visaWorkflow.items.forEach((element: any, key: number) => { if (!this.functions.empty(element['externalId'])) {