diff --git a/sql/data_fr.sql b/sql/data_fr.sql index 270298d894a8c6a052a35306e6fa69a60252e40e..d4acedfd3adc88bc565f16ddf9f5269eb610e6c5 100755 --- a/sql/data_fr.sql +++ b/sql/data_fr.sql @@ -26,4 +26,4 @@ INSERT INTO status (reference, label) VALUES ('REF', 'Refusé'); /* Tests */ INSERT INTO main_documents (reference, subject, doc_date, status, priority, sender, sender_entity, processing_user, recipient, creation_date) VALUES ('2018/A/1', 'Mon Courrier', CURRENT_TIMESTAMP, 2, 'Urgent', 'Oliver Queen', 'QE', 1, 'Barry Allen', CURRENT_TIMESTAMP); -INSERT INTO adr_main_documents (main_document_id, type, path, filename) VALUES (1, 'DOC', 'tests/', 'test.pdf'); +INSERT INTO adr_main_documents (main_document_id, type, path, filename, fingerprint) VALUES (1, 'DOC', 'tests/', 'test.pdf', 'toto'); diff --git a/sql/structure.sql b/sql/structure.sql index 6e97a22b471743c85d8b25fd280f4f846f79be1d..bb464f1a433d8d26d3207d221a9d7c5c11595148 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -99,7 +99,7 @@ CREATE TABLE adr_main_documents type character varying(32) NOT NULL, path character varying(255) NOT NULL, filename character varying(255) NOT NULL, - fingerprint character varying(255) DEFAULT NULL::character varying, + fingerprint character varying(255) NOT NULL, CONSTRAINT adr_letterbox_pkey PRIMARY KEY (id), CONSTRAINT adr_letterbox_unique_key UNIQUE (main_document_id, type) ) @@ -113,7 +113,7 @@ CREATE TABLE adr_attachments type character varying(32) NOT NULL, path character varying(255) NOT NULL, filename character varying(255) NOT NULL, - fingerprint character varying(255) DEFAULT NULL::character varying, + fingerprint character varying(255) NOT NULL, CONSTRAINT adr_attachments_pkey PRIMARY KEY (id), CONSTRAINT adr_attachments_unique_key UNIQUE (attachment_id, type) ) diff --git a/src/app/attachment/controllers/AttachmentController.php b/src/app/attachment/controllers/AttachmentController.php index 6d1d55a1bcbf92a9cb1468b5321d6a744de6bcb1..d68042062ea596f743db01d495dc38455c77e457 100644 --- a/src/app/attachment/controllers/AttachmentController.php +++ b/src/app/attachment/controllers/AttachmentController.php @@ -16,6 +16,7 @@ namespace Attachment\controllers; use Attachment\models\AttachmentModel; use Convert\models\AdrModel; +use Docserver\controllers\DocserverController; use Docserver\models\DocserverModel; use Document\controllers\DocumentController; use Slim\Http\Request; @@ -35,7 +36,7 @@ class AttachmentController } $adr = AdrModel::getAttachmentsAdr([ - 'select' => ['path', 'filename'], + 'select' => ['path', 'filename', 'fingerprint'], 'where' => ['attachment_id = ?', 'type = ?'], 'data' => [$args['id'], 'ATTACH'] ]); @@ -50,7 +51,13 @@ class AttachmentController return $response->withStatus(404)->withJson(['errors' => 'Attachment not found on docserver']); } - $attachment['document'] = base64_encode(file_get_contents($pathToDocument)); + //TODO Commenté pour tests +// $fingerprint = DocserverController::getFingerPrint(['path' => $pathToDocument]); +// if ($adr[0]['fingerprint'] != $fingerprint) { +// return $response->withStatus(404)->withJson(['errors' => 'Fingerprints do not match']); +// } + + $attachment['encodedAttachment'] = base64_encode(file_get_contents($pathToDocument)); return $response->withJson(['attachment' => $attachment]); } diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php index 143761829896da2afa9e3e3f81af18cbe66702b1..a2bb98d4f3f65c66b037b84f61eec04d2c082f6c 100755 --- a/src/app/document/controllers/DocumentController.php +++ b/src/app/document/controllers/DocumentController.php @@ -16,6 +16,7 @@ namespace Document\controllers; use Attachment\models\AttachmentModel; use Convert\models\AdrModel; +use Docserver\controllers\DocserverController; use Docserver\models\DocserverModel; use Document\models\DocumentModel; use Slim\Http\Request; @@ -64,7 +65,7 @@ class DocumentController $document['processingUserDisplay'] = UserModel::getLabelledUserById(['id' => $document['processing_user']]); $adr = AdrModel::getDocumentsAdr([ - 'select' => ['path', 'filename'], + 'select' => ['path', 'filename', 'fingerprint'], 'where' => ['main_document_id = ?', 'type = ?'], 'data' => [$args['id'], 'DOC'] ]); @@ -79,7 +80,13 @@ class DocumentController return $response->withStatus(404)->withJson(['errors' => 'Document not found on docserver']); } - $document['document'] = base64_encode(file_get_contents($pathToDocument)); + //TODO Commenté pour tests +// $fingerprint = DocserverController::getFingerPrint(['path' => $pathToDocument]); +// if ($adr[0]['fingerprint'] != $fingerprint) { +// return $response->withStatus(404)->withJson(['errors' => 'Fingerprints do not match']); +// } + + $document['encodedDocument'] = base64_encode(file_get_contents($pathToDocument)); $document['attachments'] = AttachmentModel::getByDocumentId(['select' => ['id'], 'documentId' => $args['id']]); return $response->withJson(['document' => $document]);