From 01ac74588977c81cceceb68557d89d1e2f204202 Mon Sep 17 00:00:00 2001
From: Tamara Steinwender <tamara.steinwender@tugraz.at>
Date: Tue, 7 Jul 2020 11:31:07 +0200
Subject: [PATCH] Error message parsing with language support (#22)

---
 src/i18n/de/translation.json              |  4 +++-
 src/i18n/en/translation.json              |  4 +++-
 src/vpu-qualified-signature-pdf-upload.js | 28 ++++++++++++++++++++++-
 3 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/i18n/de/translation.json b/src/i18n/de/translation.json
index 33ac4b7..8f49977 100644
--- a/src/i18n/de/translation.json
+++ b/src/i18n/de/translation.json
@@ -97,5 +97,7 @@
     "continue": "Platzierung bestätigen"
   },
   "error-permission-message": "Sie müssen das Recht auf Amtssignaturen besitzen um diese Funktion nutzen zu können!",
-  "error-login-message": "Sie müssen eingeloggt sein um diese Funktion nutzen zu können!"
+  "error-login-message": "Sie müssen eingeloggt sein um diese Funktion nutzen zu können!",
+  "error-cancel-message": "Der Signaturprozess wurde manuell abgebrochen.",
+  "error-rights-message": "Abbruch auf Grund mangelnder Rechte Ihres Accounts."
 }
diff --git a/src/i18n/en/translation.json b/src/i18n/en/translation.json
index b8b5205..e20a48d 100644
--- a/src/i18n/en/translation.json
+++ b/src/i18n/en/translation.json
@@ -97,5 +97,7 @@
     "continue": "Confirm placement"
   },
   "error-permission-message": "You need have permissions to use the official signature to use this function!",
-  "error-login-message": "You need to be logged in to use this function!"
+  "error-login-message": "You need to be logged in to use this function!",
+  "error-cancel-message": "The signature process was manually aborted.",
+  "error-rights-message": "Abort due to insufficient rights of your account."
 }
diff --git a/src/vpu-qualified-signature-pdf-upload.js b/src/vpu-qualified-signature-pdf-upload.js
index 117c513..d7535a3 100644
--- a/src/vpu-qualified-signature-pdf-upload.js
+++ b/src/vpu-qualified-signature-pdf-upload.js
@@ -212,6 +212,32 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitEle
         event.returnValue = '';
     }
 
+    /**
+     * Parse error message for user friendly output
+     *
+     * @param error
+     */
+    parseError(error) {
+        let errorParsed = error;
+        // Common Error Messages fpr pdf-as: https://www.buergerkarte.at/konzept/securitylayer/spezifikation/20140114/errorcodes/errorcodes.html
+        // SecurityLayer Error: [6000] Unklassifizierter Abbruch durch den Bürger.
+        if(error.includes('SecurityLayer Error: [6001]'))
+        {
+            errorParsed = i18n.t('error-cancel-message');
+        }
+        // SecurityLayer Error: [6001] Abbruch durch den Bürger über die Benutzerschnittstelle.
+        else if(error.includes('SecurityLayer Error: [6000]'))
+        {
+            errorParsed = i18n.t('error-cancel-message');
+        }
+        // SecurityLayer Error: [6002] Abbruch auf Grund mangelnder Rechte zur Befehlsausführung.
+        else if(error.includes('SecurityLayer Error: [6002]'))
+        {
+            errorParsed = i18n.t('error-rights-message');
+        }
+        return errorParsed;
+    }
+
     onReceiveIframeMessage(event) {
         const data = event.data;
 
@@ -222,7 +248,7 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitEle
             if (data.cause) {
                 error = `${error}: ${data.cause}`;
             }
-            file.json = {"hydra:description" : error};
+            file.json = {"hydra:description" : this.parseError(error)};
             this.addToErrorFiles(file);
             this._("#iframe").src = "about:blank";
             this.externalAuthInProgress = false;
-- 
GitLab