diff --git a/rest/index.php b/rest/index.php index c3a0a326ea32e9719b656fcb1f835da664698590..996b2e7cdb4b1d2bfb4619d7a146e0959473d90b 100755 --- a/rest/index.php +++ b/rest/index.php @@ -192,6 +192,7 @@ $app->get('/header', \SrcCore\controllers\CoreController::class . ':getHeader'); //Home $app->get('/home', \Home\controllers\HomeController::class . ':get'); $app->get('/home/lastRessources', \Home\controllers\HomeController::class . ':getLastRessources'); +$app->get('/home/maarchParapheurDocuments', \Home\controllers\HomeController::class . ':getMaarchParapheurDocuments'); //Jnlp $app->post('/jnlp', \ContentManagement\controllers\JnlpController::class . ':generateJnlp'); @@ -271,7 +272,6 @@ $app->get('/natures', \Resource\controllers\ResController::class . ':getNatures' $app->get('/resources/{resId}/isAllowed', \Resource\controllers\ResController::class . ':isAllowedForCurrentUser'); $app->post('/resources/checkFileUpload', \Resource\controllers\StoreController::class . ':checkFileUpload'); - //ResourcesList $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}', \Resource\controllers\ResourceListController::class . ':get'); $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions', \Resource\controllers\ResourceListController::class . ':getActions'); diff --git a/src/app/home/controllers/HomeController.php b/src/app/home/controllers/HomeController.php index c65c4d6b444b4f3e8f40d1bdebc6af5f6fc1e44f..b3199caa35a2ccd47247a5e8dcea536e36263a88 100755 --- a/src/app/home/controllers/HomeController.php +++ b/src/app/home/controllers/HomeController.php @@ -20,6 +20,8 @@ use Group\models\GroupModel; use Resource\models\ResModel; use Slim\Http\Request; use Slim\Http\Response; +use SrcCore\models\CoreConfigModel; +use SrcCore\models\CurlModel; use User\models\UserModel; use Parameter\models\ParameterModel; @@ -84,10 +86,24 @@ class HomeController $assignedBaskets[$key]['ownerLogin'] = UserModel::getById(['id' => $assignedBasket['owner_user_id'], 'select' => ['user_id']])['user_id']; } + $isMaarchParapheurConnected = false; + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); + if (!empty($loadedXml)) { + foreach ($loadedXml->signatoryBook as $value) { + if ($value->id == "maarchParapheur") { + if (!empty($value->url) && !empty($value->userId) && !empty($value->password)) { + $isMaarchParapheurConnected = true; + } + break; + } + } + } + return $response->withJson([ - 'regroupedBaskets' => $regroupedBaskets, - 'assignedBaskets' => $assignedBaskets, - 'homeMessage' => $homeMessage, + 'regroupedBaskets' => $regroupedBaskets, + 'assignedBaskets' => $assignedBaskets, + 'homeMessage' => $homeMessage, + 'isMaarchParapheurConnected' => $isMaarchParapheurConnected ]); } @@ -114,4 +130,57 @@ class HomeController 'lastResources' => $lastResources, ]); } + + public function getMaarchParapheurDocuments(Request $request, Response $response) + { + $user = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['external_id']]); + + $externalId = json_decode($user['external_id'], true); + if (empty($externalId['maarchParapheur'])) { + return $response->withStatus(400)->withJson(['errors' => 'User is not linked to Maarch Parapheur']); + } + + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); + if (empty($loadedXml)) { + return $response->withStatus(400)->withJson(['errors' => 'SignatoryBooks configuration file missing']); + } + + $url = ''; + $userId = ''; + $password = ''; + foreach ($loadedXml->signatoryBook as $value) { + if ($value->id == "maarchParapheur") { + $url = $value->url; + $userId = $value->userId; + $password = $value->password; + break; + } + } + + if (empty($url)) { + return $response->withStatus(400)->withJson(['errors' => 'Maarch Parapheur configuration missing']); + } + + $curlResponse = CurlModel::execSimple([ + 'url' => rtrim($url, '/') . '/rest/documents', + 'basicAuth' => ['user' => $userId, 'password' => $password], + 'headers' => ['content-type:application/json'], + 'method' => 'GET', + 'queryParams' => ['userId' => $externalId['maarchParapheur'], 'limit' => 10] + ]); + + if ($curlResponse['code'] != '200') { + if (!empty($curlResponse['response']['errors'])) { + $errors = $curlResponse['response']['errors']; + } else { + $errors = $curlResponse['errors']; + } + if (empty($errors)) { + $errors = 'An error occured. Please check your configuration file.'; + } + return $response->withStatus(400)->withJson(['errors' => $errors]); + } + + return $response->withJson($curlResponse['response']); + } }