Lizenzierung

TreatmentConsultant prüft einen Lizenzschlüssel lokal im Browser: Signatur, Ablaufdatum und Domain werden offline geprüft, eine Serverkomponente ist nicht nötig. Fehlt der Schlüssel, ist er ungültig, abgelaufen oder für die aktuelle Domain nicht gültig, blendet das Widget ein Wasserzeichen ein. Der Assistent darunter bleibt in jedem Fall voll bedienbar. Das Wasserzeichen ist rein optisch, ein Sonderfall bei der Lizenzierung unterbricht also nie den eigentlichen Buchungsablauf für echte Besucher.

Zusätzlich zu dieser lokalen Prüfung führt das Widget eine zwischengespeicherte Online-Prüfung nach bestem Bemühen gegen die Lizenz-API von GuideMyHair durch, einmal alle 24 Stunden pro Lizenzschlüssel statt bei jedem Seitenaufruf. So wird eine Lizenz erkannt, die serverseitig gekündigt wurde oder abgelaufen ist, obwohl ihr Token noch gültig signiert und nicht abgelaufen ist. Diese Prüfung schlägt offen fehl: Ein Netzwerkfehler oder ein nicht erreichbarer GuideMyHair-Server widerruft nie eine lokal gültige Lizenz, das tut nur eine ausdrückliche Antwort „inaktiv“. Die Website Ihrer Kundschaft hängt also nie von unserer Verfügbarkeit ab.

Sehen Sie es mit einem echten Lizenzschlüssel auf unserer Live-Demo-Seite in Aktion.

Einen Schlüssel erhalten

Kaufen Sie einen Tarif auf der Preisseite, und Ihr Lizenzschlüssel wird Ihnen automatisch per E-Mail zugeschickt. Es handelt sich um ein signiertes Token. Behandeln Sie es wie jeden anderen API-Schlüssel (nicht in ein öffentliches Repository committen), aber Sie können es bedenkenlos in Ihrem clientseitigen Bundle ausliefern, denn es weist nur die Berechtigung nach und gewährt keinen Zugriff auf sensible Daten.

Den Schlüssel übergeben

Übergeben Sie ihn als Prop an eine einzelne Instanz oder einmalig über das Plugin für alle Instanzen in Ihrer App. Sind beide gesetzt, hat die Prop immer Vorrang vor dem Schlüssel des Plugins.

vue
<TreatmentConsultant license-key="eyJhbGciOi..." />
ts
// app/plugins/hair-treatments.ts
import { createHairTreatments } from "srcdev-hair-treatments"

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(createHairTreatments({ licenseKey: "eyJhbGciOi..." }))
})

Domainabgleich

Jede Lizenz ist an eine oder mehrere Domains gebunden, die in Ihrem Konto hinterlegt sind. Der Hostname der aktuellen Seite wird mit dieser Liste abgeglichen:

  • localhost und 127.0.0.1 sind immer erlaubt, für die lokale Entwicklung brauchen Sie also nie einen echten Schlüssel.
  • Eine einfache Domain (example.com) deckt auch ihre www.-Variante ab und umgekehrt. Sie müssen nicht beide eintragen.
  • Ein Wildcard-Eintrag (*.example.com) deckt jede Subdomain dieser Domain ab, also staging.example.com, preview.example.com und so weiter, aber nicht die Domain selbst. Kombinieren Sie ihn mit einem einfachen Eintrag example.com, wenn Sie beides brauchen.
  • Gemeinsam genutzte Vorschau-Domains wie *.vercel.app, *.netlify.app und ähnliche werden niemals abgeglichen, bei keiner Lizenz und unter keinen Umständen. Diese Domain gehört nicht Ihnen und kann daher nicht lizenziert werden: Sie wird mit allen anderen Apps auf derselben Plattform geteilt, sie zuzulassen hieße also, alle zuzulassen. Rechnen Sie bei Vorschau-Deployments mit dem Wasserzeichen. Wenn Sie eine Vorschau ohne Wasserzeichen teilen möchten, richten Sie stattdessen eine Subdomain Ihrer eigenen Domain auf das Deployment.

Sie möchten Domains einer bestehenden Lizenz hinzufügen oder ändern, z. B. eine Staging-Subdomain? Kontaktieren Sie uns.

Content-Security-Policy

Wenn Ihre Website eine connect-src-Direktive setzt, fügen Sie https://guidemyhair.com hinzu. Das ist die oben beschriebene Online-Prüfung. Eine blockierte Anfrage sieht für das Widget genauso aus wie ein Netzwerkfehler und schlägt daher still offen fehl, statt sichtbar einen Fehler anzuzeigen. In beiden Fällen erhalten Sie eine spezifische Konsolenwarnung („blocked by Content-Security-Policy“ bzw. eine allgemeine Meldung über einen Netzwerkfehler). Prüfen Sie also die Browserkonsole, wenn Sie unsicher sind, was zutrifft.

Gründe für das Wasserzeichen

GrundAngezeigt, wenn
Kein Lizenzschlüssel angegebenweder die Prop noch das Plugin einen Schlüssel gesetzt hat
Lizenzschlüssel konnte nicht verifiziert werdender Schlüssel fehlerhaft ist oder nicht von GuideMyHair signiert wurde
Diese Lizenz ist abgelaufendas Ablaufdatum der Lizenz überschritten ist (nur bei Abonnements, Lifetime-Lizenzen laufen nie ab)
Diese Lizenz ist für diese Domain nicht gültigder aktuelle Hostname nicht von den Domains der Lizenz abgedeckt ist. Siehe Domainabgleich oben
Diese Lizenz ist nicht mehr aktivdie tägliche Online-Prüfung eine ausdrückliche Antwort „inaktiv“ erhalten hat, weil die Lizenz serverseitig gekündigt wurde oder abgelaufen ist