From b571397982606c3914b05159ed48cae75cca8eba Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Thu, 11 Apr 2019 14:58:52 +0100
Subject: [PATCH] FEAT #9734 electronic signature

---
 config/config.xml.default                     | 11 +++++++
 config/log4php.default.xml                    | 33 -------------------
 package.json                                  |  4 +--
 .../controllers/DocumentController.php        | 19 +++++++++++
 4 files changed, 32 insertions(+), 35 deletions(-)
 delete mode 100755 config/log4php.default.xml

diff --git a/config/config.xml.default b/config/config.xml.default
index 881c10aa50..771d3ba224 100755
--- a/config/config.xml.default
+++ b/config/config.xml.default
@@ -13,4 +13,15 @@
         <user>maarch</user>
         <password>maarch</password>
     </database>
+    <electronicSignature>
+        <enable>false</enable>
+        <certPath>/home/maarch/Bureau/tcpdf.crt</certPath>
+        <password>password</password>
+        <certInfo>
+            <name>Maarch</name>
+            <location>Paris</location>
+            <reason>Signature Maarch Parapheur</reason>
+            <contactInfo>Maarch SAS, société du groupe Archiveco</contactInfo>
+        </certInfo>
+    </electronicSignature>
 </ROOT>
diff --git a/config/log4php.default.xml b/config/log4php.default.xml
deleted file mode 100755
index 772a18d34e..0000000000
--- a/config/log4php.default.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/"
-    threshold="all" debug="false">
-    <appender name="appenderFonctionnel" class="LoggerAppenderRollingFile">
-        <layout class="LoggerLayoutTTCC" />
-        <param name="file" value="./fonctionnel.log" />
-        <param name="maxFileSize" value="10MB" />
-        <param name="maxBackupIndex" value="10" />
-        <layout class="LoggerLayoutPattern">
-            <param name="ConversionPattern" value="[%d{d/m/Y H:i:s}] %-5p [%t] %m%n" />
-        </layout>
-    </appender>
-    <appender name="appenderTechnique" class="LoggerAppenderRollingFile">
-        <layout class="LoggerLayoutTTCC" />
-        <param name="file" value="./technique.log" />
-        <param name="maxFileSize" value="10MB" />
-        <param name="maxBackupIndex" value="10" />
-        <layout class="LoggerLayoutPattern">
-            <param name="ConversionPattern" value="[%d{d/m/Y H:i:s}] %-5p [%t] %m%n" />
-        </layout>
-    </appender>
-    <root>
-        <level value="ERROR" />
-        <appender_ref ref="fonctionnel,technique" />
-    </root>
-    <logger name="loggerFonctionnel" additivity="true">
-        <level value="ERROR" />
-        <appender_ref ref="appenderFonctionnel" />
-    </logger>
-    <logger name="loggerTechnique" additivity="true">
-        <level value="ERROR" />
-        <appender_ref ref="appenderTechnique" />
-    </logger>
-</log4php:configuration>
diff --git a/package.json b/package.json
index 7bf7f138cd..cc4524b83f 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
     "exif-js": "^2.3.0",
     "hammerjs": "^2.0.8",
     "interactjs": "^1.4.0-rc.9",
-    "jquery": "^3.3.1",
+    "jquery": "^3.4.0",
     "ng2-pdf-viewer": "^5.2.4",
     "ngx-cookie-service": "^2.1.0",
     "ngx-scroll-event": "^1.0.8",
@@ -56,7 +56,7 @@
     "@types/jasmine": "^3.3.12",
     "@types/jasminewd2": "^2.0.6",
     "@types/jquery": "^3.3.29",
-    "@types/node": "^11.13.2",
+    "@types/node": "^11.13.4",
     "codelyzer": "~5.0.0",
     "jasmine-core": "~3.4.0",
     "jasmine-spec-reporter": "~4.2.1",
diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php
index 33a7d6ec9e..15dda0e508 100755
--- a/src/app/document/controllers/DocumentController.php
+++ b/src/app/document/controllers/DocumentController.php
@@ -375,6 +375,25 @@ class DocumentController
                     }
                 }
             }
+
+            $loadedXml = CoreConfigModel::getConfig();
+
+            if ($loadedXml->electronicSignature->enable == 'true') {
+                $certPath = realpath((string)$loadedXml->electronicSignature->certPath);
+                if (is_file($certPath)) {
+                    $certificate = 'file://' . $certPath;
+                    $info = [
+                        'Name'        => (string)$loadedXml->electronicSignature->certInfo->name,
+                        'Location'    => (string)$loadedXml->electronicSignature->certInfo->location,
+                        'Reason'      => (string)$loadedXml->electronicSignature->certInfo->reason,
+                        'ContactInfo' => (string)$loadedXml->electronicSignature->certInfo->contactInfo
+                    ];
+                    $pdf->setSignature($certificate, $certificate, (string)$loadedXml->electronicSignature->password, '', 2, $info);
+                } else {
+                    return $response->withStatus(400)->withJson(['errors' => 'check certPath']);
+                }
+            }
+
             $fileContent = $pdf->Output('', 'S');
 
             $storeInfos = DocserverController::storeResourceOnDocServer([
-- 
GitLab