# Interceptor Beispiel: Signaturen speichern

**URL:** <https://ecm.community/t/interceptor-beispiel-signaturen-speichern/330>\
**Category:** Embedded Documents for enaio® und yuuvis®\
**Tags:** coding\
**Created:** [7. Dezember 2022 um 15:17 UTC](https://ecm.community/t/interceptor-beispiel-signaturen-speichern/330 "2022-12-07T15:17:49Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![uw](https://ecm.community/user_avatar/ecm.community/uw/32/695_2.png) [@uw](https://ecm.community/u/uw)\
**Post date:** [2. Juni 2023 um 11:46 UTC](https://ecm.community/t/interceptor-beispiel-signaturen-speichern/330/2 "2023-06-02T11:46:00Z")

</div>

Ich habe auf Basis einer Anfrage eines Kunden eine Variante erstellt, welche die Unterschriften per Custom Settings (AppConnector) benutzerspezifisch speichert und lädt. Diese Unterschriften sind dann Client unabhängig verfügbar.

_ **signatureInterceptorAppConnector.js** _

```javascript

/*
Signature Interceptor welcher die Signaturen in den Custom Settings des Benutzers speichert und lädt.
Details hierzu finden Sie in der AppConnector API unter https://help.optimal-systems.com/enaio_develop/pages/viewpage.action?pageId=1867869#SessionService(/session)-/osrest/api/session/settings/custom/load
*/

var signatureInterceptorAppConnector = {
  // Beim starten der Editor Instanz
  initEditorConfiguration(instance) {
    const { documentViewer } = instance.Core;

    // Signatur Tool holen
    const signatureTool = documentViewer.getTool('AnnotationCreateSignature');

    // Methode zum speichern der Signaturen definieren
    const saveSignature = async () => {
      const signatures = await signatureTool.exportSignatures();

      const data = {
        type: 80,
        name: 'ed-signatures',
        value: JSON.stringify(signatures),
      };

      const response = await fetch(`/osrest/api/session/settings/custom/save`, {
        method: 'POST',
        body: JSON.stringify(data),
        headers: {
          'Content-Type': 'application/json',
        },
      });
      // Prüfen ob die Signature gespeichert werden konnte
      if (response.status == 204) {
        console.log('Signature saved');
      } else {
        console.error(response);
      }
    };
    // Methode zum laden der Signaturen definieren
    const loadSignature = async () => {
      const currentSignatures = await signatureTool.exportSignatures();
      if(!currentSignatures?.length > 0){
        const response = await fetch(`/osrest/api/session/settings/custom/load?type=80&name=ed-signatures`);
        // Prüfen ob das laden erfolgreich war
        if (response.status == 200) {
          const signatures = await response.json();
          if (signatures.value) {
            // Import der Signaturen in embedded documents
            const signatureValue = JSON.parse(signatures.value);
            await signatureTool.importSignatures(signatureValue);
            console.log(signatureValue);
            console.log('Signature loaded');
         }
        } else {
            console.error(response);
        }
      } else {
        console.log('Signatures already loaded');
      }
    };

    // Immer speichern wenn eine Signatur erstellt oder gelöscht wird
    signatureTool.addEventListener('signatureSaved', saveSignature);
    signatureTool.addEventListener('signatureDeleted', saveSignature);
    // Nachdem das Dokument geladen wurde, prüfen ob die Signaturen schon importiert wurden. Darf nicht zuvor passieren, da diese ansonsten nicht auftauchen.
    documentViewer.addEventListener("documentLoaded", loadSignature);
  },
};

```

---

_[View the full topic](https://ecm.community/t/interceptor-beispiel-signaturen-speichern/330)._
