Datenraum-Bedingungen: Ereignis-Listener, Sperre und Widerruf
Das beim Speichern der Bedingungsseite ausgelöste Benachrichtigungsereignis, die Zustimmungssperre im Portal mit Versions-Fingerabdruck und die Datenhaltung der erneuten Zustimmung je Benutzer.
Die Bedingungsverwaltung besteht aus drei Teilen: Sperre und Zustimmung im Portal, ein Ereignis-Listener, der nach dem Speichern der Bedingungsseite benachrichtigt, und der Widerruf im Benutzerformular. Der Listener ist weder Menüpunkt noch Ansicht.
Datenmodell
Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation.
| Tabelle | Rolle | Hauptfelder |
|---|---|---|
doc_room_consent | die Zustimmung | user_id, store_id, source_ref (information:ID oder cms:ID), content_hash (SHA-1, 40), language_id, ip, user_agent, date_added, revoked_at, revoked_by |
doc_room_event | Zeitachse | terms_changed, consent_reset, Zustimmung |
event (Framework) | Registrierung des Listeners | dlbt_room_terms_changed |
person.language_id | Sprache der Benachrichtigung (0 = Standard des Shops) | — |
Portal-Sperre und Zustimmung
- Das Theme legt die Anforderung in die Konfiguration: Quellverweis und SHA-1-Fingerabdruck aller Sprachen des Bedingungstextes (Version). Gibt es eine Anforderung und hat der Benutzer keine gültige Zustimmung (gleicher Shop, Quelle, Fingerabdruck, nicht widerrufen), verweigert jeder Raum-Endpunkt.
- Zustimmung (POST, Sitzungstoken, accept = 1): erfasst mit Benutzer, Shop, Quelle, Fingerabdruck, Sprache, IP und Browser; ohne ID „Ihre Zustimmung konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.“; bei Erfolg Weiterleitung in den Raum, Protokollzeile und Zeitachsen-Ereignis.
- Jede Änderung einer Sprache ergibt einen neuen Fingerabdruck, sodass die Sperre bei der nächsten Anmeldung von selbst erneut fragt.
Benachrichtigungsereignis
- Auslöser: das Framework-Ereignis nach dem Speichern einer Informationsseite.
- Für jeden Shop (Standard und weitere) prüft es in den Einstellungen des Datenraum-Themes, ob die Bedingungsseite die gerade gespeicherte Informationsseite ist.
- Bei Übereinstimmung erhält jeder Benutzer des Shops mit heute gültigem Zugriff eine E-Mail in seiner Sprache, mit der Vorlage des Mailmoduls (Modul: Ordner, Ereignis:
room_terms_changed; Variablen:##recipient_name##,##client_name##,##room_name##,##link##,##button##), ohne Vorlage mit eingebautem Text, über den zentralen Mailversand, im Namen des Kunden. - Ein Zeitachsen-Ereignis je Benutzer (
terms_changed) und eine Protokollzeile. Mailfehler verhindern das Speichern nicht; sie werden protokolliert.
Widerruf im Benutzerformular
- Recht (
consentreset) und gültige Benutzer-ID. - Jede noch nicht widerrufene Zustimmung des Benutzers erhält Widerrufszeit und widerrufenden Benutzer.
- Zurücklesen; fehlt die Widerrufsspalte, meldet eine Nachricht die fehlende Migration; gab es nichts zu widerrufen: „Es gibt keine gültige Zustimmung zum Widerrufen.“
- Zeitachsen-Ereignis (
consent_reset), Erfolgsmeldung. Keine E-Mail.
Berechtigungen
- Der Listener hat keinen Funktionsschlüssel: Wer die Informationsseite speichern kann, löst ihn aus.
- Widerruf:
user/userconsentreset(Basispaket); die Karte erscheint nur mit diesem Recht und bei einem bestehenden Benutzer. - Die Portal-Sperre läuft serverseitig an jedem Raum-Endpunkt.
Bekannte Einschränkungen
Der Listener beobachtet nur Informationsseiten; eine Änderung von Bedingungen aus einem Artikel der Inhaltsverwaltung sendet keine E-Mail, da es im Code keinen solchen Listener gibt. Die Beschriftungen der Benutzer-Menügruppe sind fest auf Englisch und nur für den Super-Administrator sichtbar.