From 3e2ae47a491aa4e77aad515138dc316aefb3a061 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Wed, 9 Dec 2020 18:19:05 +0100
Subject: [PATCH] FIX #14565 TIME 0:00 Sign document with certificate

---
 .../CertificateSignatureController.php        | 28 +++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/app/document/controllers/CertificateSignatureController.php b/src/app/document/controllers/CertificateSignatureController.php
index e44ee5ae9d..c25c8e89f4 100755
--- a/src/app/document/controllers/CertificateSignatureController.php
+++ b/src/app/document/controllers/CertificateSignatureController.php
@@ -14,6 +14,7 @@
 
 namespace Document\controllers;
 
+use Docserver\controllers\DocserverController;
 use Docserver\models\AdrModel;
 use Docserver\models\DocserverModel;
 use SrcCore\models\CoreConfigModel;
@@ -153,11 +154,34 @@ class CertificateSignatureController
         $signer->saveSignature($tmpDocument, $cms);
         try {
             $signer->saveSignature($tmpDocument, $cms);
-            unlink($tmpDocument->getWriter()->getPath());
+            // unlink($tmpDocument->getWriter()->getPath());
         } catch (\SetaPDF_Signer_Exception_ContentLength $e) {
-            unlink($tmpDocument->getWriter()->getPath());
+            // unlink($tmpDocument->getWriter()->getPath());
             $signatureContentLength = $signatureContentLength + 1000;
             return ['errors' => 'Not enought space for signature', 'newSignatureLength' => $signatureContentLength];
         }
+
+        $storeInfos = DocserverController::storeResourceOnDocServer([
+            'encodedFile'   => base64_encode(file_get_contents($signedDocumentPath)),
+            'format'        => 'pdf',
+            'docserverType' => 'ESIGN'
+        ]);
+
+        // if (!empty($storeInfos['errors'])) {
+        //     return ['errors' => $storeInfos['errors']];
+        // }
+
+        AdrModel::deleteDocumentAdr([
+            'where' => ['main_document_id = ?', 'type = ?'],
+            'data'  => [$args['id'], 'ESIGN']
+        ]);
+        AdrModel::createDocumentAdr([
+            'documentId'  => $args['id'],
+            'type'        => 'ESIGN',
+            'path'        => $storeInfos['path'],
+            'filename'    => $storeInfos['filename'],
+            'fingerprint' => $storeInfos['fingerprint']
+        ]);
+        // unlink($signedDocumentPath);
     }
 }
-- 
GitLab