diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index c79a750a47599f34b163a4b0955c37f12b031815..2f1fab45b285a486611b05ca93fa739a517e4ef0 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -375,13 +375,14 @@ class ResController extends ResourceControlController return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); } - $document = ResModel::getById(['select' => ['filename', 'format'], 'resId' => $aArgs['resId']]); + $document = ResModel::getById(['select' => ['filename', 'format', 'typist'], 'resId' => $aArgs['resId']]); if (empty($document)) { return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']); } elseif (empty($document['filename'])) { return $response->withStatus(400)->withJson(['errors' => 'Document has no file']); } $originalFormat = $document['format']; + $creatorId = $document['typist']; $convertedDocument = ConvertPdfController::getConvertedPdfById(['resId' => $aArgs['resId'], 'collId' => 'letterbox_coll']); if (!empty($convertedDocument['errors'])) { @@ -426,7 +427,7 @@ class ResController extends ResourceControlController $data = $request->getQueryParams(); if ($data['mode'] == 'base64') { - return $response->withJson(['encodedDocument' => base64_encode($fileContent), 'originalFormat' => $originalFormat]); + return $response->withJson(['encodedDocument' => base64_encode($fileContent), 'originalFormat' => $originalFormat, 'originalCreatorId' => $creatorId]); } else { $finfo = new \finfo(FILEINFO_MIME_TYPE); $mimeType = $finfo->buffer($fileContent); diff --git a/src/frontend/app/viewer/document-viewer.component.html b/src/frontend/app/viewer/document-viewer.component.html index 4c4c1fff572978d4ab8809b148ae0761ba365913..989050e83083b146b2a866229a8d8de6fcbff591 100644 --- a/src/frontend/app/viewer/document-viewer.component.html +++ b/src/frontend/app/viewer/document-viewer.component.html @@ -114,8 +114,10 @@ (click)="saveMainDocument()"> <mat-icon style="height:auto;font-size:20px;" class="fas fa-check"></mat-icon> </button> -<button mat-raised-button *ngIf="!isDocModified && mode === 'mainDocument' && resId !== null && !functions.empty(file.subinfos) && file.subinfos.signedDocVersions && privilegeService.hasCurrentUserPrivilege('sign_document');" color="warn" +<button mat-raised-button + *ngIf="!isDocModified && mode === 'mainDocument' && resId !== null && !functions.empty(file.subinfos) && file.subinfos.signedDocVersions && (privilegeService.hasCurrentUserPrivilege('sign_document') || this.headerService.user.id == file.creatorId)" + color="warn" [title]="lang.unsign" style="position: fixed;z-index: 1;bottom: 30px;right: 70px;" (click)="unsignMainDocument()"> - Supprimer la signature + {{lang.removeSignature}} </button> \ No newline at end of file diff --git a/src/frontend/app/viewer/document-viewer.component.ts b/src/frontend/app/viewer/document-viewer.component.ts index 7776184b19008408c94f6f3aa386a0c132a546d9..6cea2aa02300c20bd3b53c9343d86bd979aa1022 100644 --- a/src/frontend/app/viewer/document-viewer.component.ts +++ b/src/frontend/app/viewer/document-viewer.component.ts @@ -521,6 +521,7 @@ export class DocumentViewerComponent implements OnInit { if (data.encodedDocument) { this.file.contentMode = 'route'; this.file.format = data.originalFormat; + this.file.creatorId = data.originalCreatorId; this.file.content = `../../rest/attachments/${resId}/originalContent`; this.file.contentView = `../../rest/attachments/${resId}/content?mode=view`; this.file.src = this.base64ToArrayBuffer(data.encodedDocument); @@ -548,6 +549,7 @@ export class DocumentViewerComponent implements OnInit { if (this.file.subinfos.mainDocVersions.length > 0) { this.requestWithLoader(`../../rest/resources/${resId}/content?mode=base64`).subscribe( (data: any) => { + this.file.creatorId = data.originalCreatorId; if (!this.file.subinfos.mainDocPDFVersions) { this.file.contentMode = 'route'; this.file.content = `../../rest/resources/${resId}/originalContent`; diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index c8b012ce31ac107ee5e72c77a4e7c231a05e4156..e30c9d81abee7edae2496b47f4450ba13255265c 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1484,6 +1484,7 @@ export const LANG_EN = { "noMailContact" : "No (external) contact linked to this mail", "noSelectedAddress": "No selected address", "documentUnsigned": "This document has been unsigned", + "removeSignature" : "Remove signature", "sent" : "Sent", "notSent" : "Not sent", "delivery" : "Delivery", diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 140a2274cec656ff4de6ecc919012c3d546169fa..7ca8df863fe7021f1f4a0a6c3b6ed2f4bede75b1 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1525,6 +1525,7 @@ export const LANG_FR = { "documentUnsigned": "La signature du document a été retirée", "m2m_ARCHIVETRANSFER" : "Pli numérique", "m2m_ARCHIVETRANSFERREPLY" : "Réponse envoyée", + "removeSignature" : "Supprimer la signature", "sent" : "Envoyé", "notSent" : "Non envoyé", "delivery" : "Pris en charge", diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index 6c936c6dee253016ce405419c8405df202a43f23..5f4b6da211db1dc98af156f9bf0458ffa190263a 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1509,6 +1509,7 @@ export const LANG_NL = { "noMailContact" : "No (external) contact linked to this mail", //_TO_TRANSLATE "noSelectedAddress": "No selected address", //_TO_TRANSLATE "documentUnsigned": "This document has been unsigned", //_TO_TRANSLATE + "removeSignature" : "Remove signature", //_TO_TRANSLATE "sent" : "Sent", //_TO_TRANSLATE "notSent" : "Not sent", //_TO_TRANSLATE "delivery" : "Delivery", //_TO_TRANSLATE