diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php index 61f1f22b2a6eed5927ac8902e1ebacb6069ee364..c21afcf931a7e1c4c42cea2ba6e731acdc58fcdc 100755 --- a/src/app/document/controllers/DocumentController.php +++ b/src/app/document/controllers/DocumentController.php @@ -1067,14 +1067,8 @@ class DocumentController $docserver = DocserverModel::getByType(['type' => 'ESIGN', 'select' => ['path']]); $pathToDocument = $docserver['path'] . $adr[0]['path'] . $adr[0]['filename']; - if ($loadedXml->metaSignSignature->enable == 'true') { - $adr = AdrModel::getDocumentsAdr([ - 'select' => ['path', 'filename'], - 'where' => ['main_document_id = ?', 'type = ?'], - 'data' => [$args['id'], 'DOC'] - ]); - $docserver = DocserverModel::getByType(['type' => 'DOC', 'select' => ['path']]); - $pathToDocument = $docserver['path'] . $adr[0]['path'] . $adr[0]['filename']; + if ($loadedXml->metaSignSignature->enable == 'true' && $workflow['signature_mode'] == 'eidas_metasign') { + $pathToDocument = MetaSignSignatureController::getDocumentPath(['documentId' => (int) $args['id']]); } $tmpPath = CoreConfigModel::getTmpPath(); $signedDocumentPath = $tmpPath . $GLOBALS['id'] . '_' . rand() . '_signedDocument.pdf'; @@ -1114,7 +1108,7 @@ class DocumentController $signPosX = ($signature['positionX'] * $format['width']) / 100; $signPosY = ($signature['positionY'] * $format['height']) / 100; } - if ($loadedXml->docaposteSignature->enable == 'true') { + if ($loadedXml->docaposteSignature->enable == 'true' && !empty($workflow['digital_signature_id'])) { $return = DigitalSignatureController::signHashes([ 'signatureId' => $workflow['digital_signature_id'], 'documentId' => $args['id'], @@ -1127,7 +1121,7 @@ class DocumentController ], 'isLastSignature' => !isset($body['signatures'][$key + 1]) ]); - } else if ($loadedXml->metaSignSignature->enable == 'true') { + } else if ($loadedXml->metaSignSignature->enable == 'true' && $workflow['signature_mode'] == 'eidas_metasign') { $return = MetaSignSignatureController::signDocument([ 'documentId' => (int) $args['id'], 'signatureInfo' => [ @@ -1148,19 +1142,23 @@ class DocumentController } } } - if (!$imageSignature && $loadedXml->docaposteSignature->enable == 'true') { + if (!$imageSignature && $loadedXml->docaposteSignature->enable == 'true' && !empty($workflow['digital_signature_id'])) { $return = DigitalSignatureController::signHashes(['signatureId' => $workflow['digital_signature_id'], 'documentId' => $args['id'], 'isLastSignature' => true]); if (!empty($return['errors'])) { return $response->withStatus(400)->withJson($return); } } - if (!$imageSignature && $loadedXml->metaSignSignature->enable == 'true') { + if (!$imageSignature && $loadedXml->metaSignSignature->enable == 'true' && $workflow['signature_mode'] == 'eidas_metasign') { $return = MetaSignSignatureController::signDocument(['documentId' => (int) $args['id'], 'isLastSignature' => true]); if (!empty($return['errors'])) { return $response->withStatus($return['code'])->withJson(['errors' => $return['errors']]); } } - } elseif (DocumentController::ACTIONS[$args['actionId']] == 'REF' && $workflow['mode'] == 'sign' && $loadedXml->docaposteSignature->enable == 'true') { + } elseif (DocumentController::ACTIONS[$args['actionId']] == 'REF' && + $workflow['mode'] == 'sign' && + $loadedXml->docaposteSignature->enable == 'true' && + !empty($workflow['digital_signature_id'])) { + $return = DigitalSignatureController::abort(['signatureId' => $workflow['digital_signature_id'], 'documentId' => $args['id']]); if (!empty($return['errors'])) { return $response->withStatus(400)->withJson($return);