From 91c769632cac7a320c7c746c65cc8473b3a80c48 Mon Sep 17 00:00:00 2001
From: Joseph AKEL <joseph.akel@maarch.org>
Date: Tue, 29 Aug 2023 15:17:11 +0200
Subject: [PATCH] FIX #25949_revert TIME 00:15 Revert branch because not a
 feature

---
 .../controllers/MaarchParapheurController.php | 34 ++++++-------------
 .../user/user-administration.component.ts     |  6 +---
 .../maarch-parapheur.service.ts               |  4 +--
 3 files changed, 12 insertions(+), 32 deletions(-)

diff --git a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php
index 689e2c38767..d5bbba70606 100755
--- a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php
+++ b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php
@@ -1013,10 +1013,6 @@ class MaarchParapheurController
         $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']);
 
         if ($loadedXml->signatoryBookEnabled == 'maarchParapheur') {
-            $url      = null;
-            $userId   = null;
-            $password = null;
-
             foreach ($loadedXml->signatoryBook as $value) {
                 if ($value->id == "maarchParapheur") {
                     $url      = $value->url;
@@ -1026,33 +1022,23 @@ class MaarchParapheurController
                 }
             }
 
-            if (empty($url) || empty($userId) || empty($password)) {
-                return $response->withStatus(400)->withJson(['errors' => 'Could not get remote signatory book configuration. Please check your configuration file.']);
-            }
-
-            $userInfo = UserModel::getById(['select' => ['external_id'], 'id' => $aArgs['id']]);
-            $userExternalIds = json_decode($userInfo['external_id'] ?? '{}', true);
+            $userInfo = UserModel::getById(['select' => ['external_id->\'maarchParapheur\' as external_id'], 'id' => $aArgs['id']]);
 
-            if (empty($userExternalIds['maarchParapheur'])) {
+            if (!empty($userInfo['external_id'])) {
+                $curlResponse = CurlModel::exec([
+                    'url'           => rtrim($url, '/') . '/rest/users/'.$userInfo['external_id'],
+                    'basicAuth'     => ['user' => $userId, 'password' => $password],
+                    'headers'       => ['content-type:application/json'],
+                    'method'        => 'GET'
+                ]);
+            } else {
                 return $response->withStatus(400)->withJson(['errors' => 'User does not have Maarch Parapheur Id']);
             }
 
-            $curlResponse = CurlModel::exec([
-                'url'           => rtrim($url, '/') . '/rest/users/' . $userExternalIds['maarchParapheur'],
-                'basicAuth'     => ['user' => $userId, 'password' => $password],
-                'headers'       => ['content-type:application/json'],
-                'method'        => 'GET'
-            ]);
-
             $errors = '';
             if ($curlResponse['code'] != '200') {
                 if (!empty($curlResponse['response']['errors'])) {
                     $errors =  $curlResponse['response']['errors'];
-
-                    if ($curlResponse['code'] == 400) {
-                        unset($userExternalIds['maarchParapheur']);
-                        UserModel::updateExternalId(['id' => $aArgs['id'], 'externalId' => json_encode($userExternalIds)]);
-                    }
                 } else {
                     $errors =  $curlResponse['errors'];
                 }
@@ -1062,7 +1048,7 @@ class MaarchParapheurController
             }
 
             if (empty($curlResponse['response']['user'])) {
-                return $response->withStatus(400)->withJson(['errors' => $errors, 'lang' => 'maarchParapheurLinkbroken']);
+                return $response->withJson(['link' => '', 'errors' => $errors]);
             }
         } else {
             return $response->withStatus(403)->withJson(['errors' => 'maarchParapheur is not enabled']);
diff --git a/src/frontend/app/administration/user/user-administration.component.ts b/src/frontend/app/administration/user/user-administration.component.ts
index 88021f9cb08..477d07bbde2 100755
--- a/src/frontend/app/administration/user/user-administration.component.ts
+++ b/src/frontend/app/administration/user/user-administration.component.ts
@@ -240,10 +240,6 @@ export class UserAdministrationComponent implements OnInit {
             } else {
                 this.externalSignatoryBookConnectionStatus = false;
             }
-        } else {
-            this.user.canLinkToExternalSignatoryBook = true;
-            this.externalSignatoryBookConnectionStatus = false;
-            this.loading = false;
         }
     }
 
@@ -271,7 +267,7 @@ export class UserAdministrationComponent implements OnInit {
 
     async linkAccountToSignatoryBook(result: any) {
         const data: any = await this.externalSignatoryBook.linkAccountToSignatoryBook(result, this.serialId);
-        if (data) {
+        if (!this.functions.empty(data)) {
             this.user.canLinkToExternalSignatoryBook = false;
             this.user.external_id[this.externalSignatoryBook.signatoryBookEnabled] = result.id;
             this.checkInfoExternalSignatoryBookAccount();
diff --git a/src/frontend/service/externalSignatoryBook/maarch-parapheur.service.ts b/src/frontend/service/externalSignatoryBook/maarch-parapheur.service.ts
index 88fbf1b7c26..31f3257083d 100644
--- a/src/frontend/service/externalSignatoryBook/maarch-parapheur.service.ts
+++ b/src/frontend/service/externalSignatoryBook/maarch-parapheur.service.ts
@@ -171,9 +171,7 @@ export class MaarchParapheurService {
                 }),
                 catchError((err: any) => {
                     if (err.error.errors === 'Login already exists') {
-                        this.notify.handleSoftErrors(this.translate.instant('lang.loginAlreadyExistsInMaarchParapheur'));
-                    } else if (err.error.errors === 'Privilege forbidden') {
-                        this.notify.handleSoftErrors(this.translate.instant('lang.insufficientPrivilege'));
+                        this.translate.instant('lang.loginAlreadyExistsInMaarchParapheur');
                     } else {
                         this.notify.handleSoftErrors(err);
                     }
-- 
GitLab