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