From c55a6340defa31d72c86de99884728972f79501b Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Thu, 6 Jun 2019 17:27:21 +0100
Subject: [PATCH] FEAT #8925 TIME 0:40 get user picture in MP

---
 rest/index.php                                |  2 +
 .../controllers/MaarchParapheurController.php | 48 +++++++++++++++++++
 .../controllers/AutoCompleteController.php    |  2 +-
 3 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/rest/index.php b/rest/index.php
index 4a723e49a0d..21452b1e0e9 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -382,6 +382,8 @@ $app->post('/saveNumericPackage', \Sendmail\Controllers\ReceiveMessageExchangeCo
 $app->post('/saveMessageExchangeReturn', \Sendmail\Controllers\ReceiveMessageExchangeController::class . ':saveMessageExchangeReturn');
 $app->post('/saveMessageExchangeReview', \Sendmail\Controllers\MessageExchangeReviewController::class . ':saveMessageExchangeReview');
 
+$app->get('/maarchParapheur/user/{id}/picture', \ExternalSignatoryBook\controllers\MaarchParapheurController::class . ':getUserPicture');
+
 $app->get('/xParaphWorkflow', \ExternalSignatoryBook\controllers\XParaphController::class . ':getWorkflow');
 $app->post('/xParaphAccount', \ExternalSignatoryBook\controllers\XParaphController::class . ':createXparaphAccount');
 $app->delete('/xParaphAccount', \ExternalSignatoryBook\controllers\XParaphController::class . ':deleteXparaphAccount');
diff --git a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php
index 5954ec4fd69..4bfd0f56692 100755
--- a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php
+++ b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php
@@ -23,7 +23,10 @@ use Note\models\NoteModel;
 use Priority\models\PriorityModel;
 use Resource\controllers\SummarySheetController;
 use Resource\models\ResModel;
+use Respect\Validation\Validator;
 use setasign\Fpdi\Tcpdf\Fpdi;
+use Slim\Http\Request;
+use Slim\Http\Response;
 use SrcCore\models\CoreConfigModel;
 use SrcCore\models\CurlModel;
 use User\models\UserModel;
@@ -420,4 +423,49 @@ class MaarchParapheurController
         $state['mode'] = $step['mode'];
         return $state;
     }
+
+    public static function getUserPicture(Request $request, Response $response, array $aArgs)
+    {
+
+        $check = Validator::intVal()->validate($aArgs['id']);
+        if (!$check) {
+            return $response->withStatus(400)->withJson(['errors' => 'id should be an integer']);
+        }
+
+        $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']);
+
+        if ($loadedXml->signatoryBookEnabled == 'maarchParapheur') {
+            foreach ($loadedXml->signatoryBook as $value) {
+                if ($value->id == "maarchParapheur") {
+                    $url      = $value->url;
+                    $userId   = $value->userId;
+                    $password = $value->password;
+                    break;
+                }
+            }
+
+            $curlResponse = CurlModel::execSimple([
+                'url'           => rtrim($url, '/') . '/rest/users/'.$aArgs['id'].'/picture',
+                'basicAuth'     => ['user' => $userId, 'password' => $password],
+                'headers'       => ['content-type:application/json'],
+                'method'        => 'GET'
+            ]);
+
+            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]);
+            }
+        } else {
+            return $response->withStatus(403)->withJson(['errors' => 'maarchParapheur is not enabled']);
+        }
+
+        return $response->withJson(['picture' => $curlResponse['response']['picture']]);
+    }
 }
diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php
index 4e1ad461916..37ddbb580fb 100755
--- a/src/core/controllers/AutoCompleteController.php
+++ b/src/core/controllers/AutoCompleteController.php
@@ -121,7 +121,7 @@ class AutoCompleteController
         $data = $request->getQueryParams();
         $check = Validator::stringType()->notEmpty()->validate($data['search']);
         if (!$check) {
-            return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
+            return $response->withStatus(400)->withJson(['errors' => 'search is empty']);
         }
 
         $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']);
-- 
GitLab