From 8cecc16bfdedca92f445a6e1c515559c23b89b34 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Thu, 6 Feb 2020 11:50:52 +0100 Subject: [PATCH] FEAT #12091 TIME 0:35 Get removed items + refactoring --- sql/data_fr.sql | 2 + .../controllers/ListTemplateController.php | 44 ++++++------------- .../controllers/MaarchParapheurController.php | 41 ++++++++++++++++- 3 files changed, 56 insertions(+), 31 deletions(-) diff --git a/sql/data_fr.sql b/sql/data_fr.sql index d66bc1d4bab..5b7ee196097 100755 --- a/sql/data_fr.sql +++ b/sql/data_fr.sql @@ -149,6 +149,8 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'a INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'add_tag_to_res'); INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'private_tag'); INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'tag_view'); +INSERT INTO usergroups_services (group_id, service_id) VALUES ('ELU', 'sign_document'); +INSERT INTO usergroups_services (group_id, service_id) VALUES ('ELU', 'visa_documents'); INSERT INTO usergroups_services (group_id, service_id) VALUES ('ADMINISTRATEUR_N1', 'admin'); INSERT INTO usergroups_services (group_id, service_id) VALUES ('ADMINISTRATEUR_N1', 'adv_search_mlb'); INSERT INTO usergroups_services (group_id, service_id, parameters) VALUES ('ADMINISTRATEUR_N1', 'admin_users', '{"groups": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]}'); diff --git a/src/app/entity/controllers/ListTemplateController.php b/src/app/entity/controllers/ListTemplateController.php index 52e838ba503..7e0a0bcc643 100755 --- a/src/app/entity/controllers/ListTemplateController.php +++ b/src/app/entity/controllers/ListTemplateController.php @@ -17,6 +17,7 @@ namespace Entity\controllers; use Entity\models\EntityModel; use Entity\models\ListTemplateItemModel; use Entity\models\ListTemplateModel; +use ExternalSignatoryBook\controllers\MaarchParapheurController; use Group\controllers\PrivilegeController; use History\controllers\HistoryController; use Resource\models\ResModel; @@ -307,50 +308,33 @@ class ListTemplateController } } - $itemsRemoved = false; + $itemsRemoved = []; $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'] = ''; } else { $user = UserModel::getById(['id' => $value['item_id'], 'select' => ['firstname', 'lastname', 'external_id']]); + 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[] = "{$user['firstname']} {$user['lastname']}"; + continue; + } elseif ($listTemplate['type'] == 'opinionCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'avis_documents', 'userId' => $value['item_id']])) { + unset($listTemplateItems[$itemKey]); + $itemsRemoved[] = "{$user['firstname']} {$user['lastname']}"; + continue; + } $listTemplateItems[$itemKey]['labelToDisplay'] = "{$user['firstname']} {$user['lastname']}"; $listTemplateItems[$itemKey]['descriptionToDisplay'] = UserModel::getPrimaryEntityById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; $externalId = json_decode($user['external_id'], true); if (!empty($queryParams['maarchParapheur']) && !empty($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/' . $externalId['maarchParapheur'], - 'basicAuth' => ['user' => $userId, 'password' => $password], - 'headers' => ['content-type:application/json'], - 'method' => 'GET' - ]); - if (!empty($curlResponse['response']['user'])) { - $listTemplateItems[$itemKey]['externalId']['maarchParapheur'] = $externalId['maarchParapheur']; - } + $userExists = MaarchParapheurController::userExists(['userId' => $externalId['maarchParapheur']]); + if (!empty($userExists)) { + $listTemplateItems[$itemKey]['externalId']['maarchParapheur'] = $externalId['maarchParapheur']; } } } diff --git a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php index 97973a6fb18..bfbf36e2b44 100755 --- a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php +++ b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php @@ -32,6 +32,7 @@ use Slim\Http\Request; use Slim\Http\Response; use SrcCore\models\CoreConfigModel; use SrcCore\models\CurlModel; +use SrcCore\models\ValidatorModel; use User\controllers\UserController; use User\models\UserModel; use User\models\UserSignatureModel; @@ -429,7 +430,7 @@ class MaarchParapheurController if (count($args['recipient']) > 1) { $contact = count($args['recipient']) . ' ' . _RECIPIENTS; } else { - $contact = $contact[0]; + $contact = $args['recipient'][0]; } $metadata[_RECIPIENTS] = $contact; } @@ -996,4 +997,42 @@ class MaarchParapheurController return $response->withJson($curlResponse['response']); } + + public static function userExists($args) + { + ValidatorModel::notEmpty($args, ['userId']); + ValidatorModel::intVal($args, ['userId']); + + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); + if (empty($loadedXml)) { + return false; + } elseif ($loadedXml->signatoryBookEnabled != 'maarchParapheur') { + return false; + } + + foreach ($loadedXml->signatoryBook as $signatoryBook) { + if ($signatoryBook->id == "maarchParapheur") { + $url = $signatoryBook->url; + $userId = $signatoryBook->userId; + $password = $signatoryBook->password; + break; + } + } + if (empty($url) || empty($userId) || empty($password)) { + return false; + } + + $curlResponse = CurlModel::execSimple([ + 'url' => rtrim($url, '/') . '/rest/users/' . $args['userId'], + 'basicAuth' => ['user' => $userId, 'password' => $password], + 'headers' => ['content-type:application/json'], + 'method' => 'GET' + ]); + + if (empty($curlResponse['response']['user'])) { + return false; + } + + return true; + } } -- GitLab