You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Zu Werbezwecken soll der Zutritt zu TREFF-Seminaren mittels Pretix-Gutscheinen möglich sein. Dazu wurde folgendes Konzept entwickelt:

Im Pretix-System des DARC (events.darc.de) wurde die Veranstaltungsreihe "Gutschein" erstellt.
Seminare, die mit einem Gutschein besucht werden können, werden als Termine (SubEvents) erstellt.
Pretix erlaubt die Erzeugung von Gutscheincodes, mit denen das kostenlose Produkt "Teilnahme" für einen Termin erworben werden kann.
Die Gutscheincodes können entweder beliebig gültig oder auf ein bestimmtes SubEvent eingeschränkt sein.
Das Produkt "Teilnahme" ist vom Typ "Digitaler Inhalt", d.h. es ist ein Link hinterlegt, an den Pretix ein signiertes JWT mit Buchungsinformationen anhängt.
Aus diesen Buchungsinformationen zieht sich Treff dann den Teilnehmerlink sowie den Anzeigename für die Teilnehmerliste.
Wenn der Raum betreten wurde, wird das Ticket auf "benutzt" gesetzt.

Der Ablauf im Detail

Anlegen eines SubEvents

Die Raumverwaltung kennt das Recht des Pretix-Termin-Ermächtigten. Wer das Recht hat, sieht 2 zusätzliche Felder:

  • Termin zu Pretix pushen Ja/Nein
  • Pretix-Slug, d.h. der Name des Haupt-Events "Gutschein"

Wird ein Termin zu Pretix gepusht, laufen im Hintergrund diverse Operationen ab:

  1. Es wird ein SubEvent erstellt und die Daten aus dem Termin übernommen
  2. Das Event-Metadaten-Feld "Teilnehmerlink" wird mit dem Teilnehmerlink gefüllt
  3. Es wird ein unbegrenztes Kontingent mit dem Produkt "Teilnahme" erstellt und mit dem SubEvent verknüpft.

Anlegen von Gutscheinen

Läuft komplett manuell in Pretix ab!

Gutscheincodes können für die gesamte Eventreihe "Gutschein" freigegeben oder auf ein bestimmtes SubEvent (=Termin) eingeschränkt werden

Verwenden eines Gutscheins

Läuft komplett in Pretix ab!

Benutzer sehen die verfügbaren Events in einem Kalender und müssen bei der Buchung einen Gutscheincode angeben.
Alternativ kann ein Gutschein-Link erzeugt werden.

Bei der Ticket-Buchung muss der Name, optional Rufzeichen und das (Nicht-)Einverständnis zur Videoaufzeichnung gegeben werden.
Diese Angaben werden später beim automatischen Login in Treff verwendet.
Der VideoConsent wird immer abgefragt, da die Einstellung in TREFF auch nach der Buchung jederzeit und kurzfristig geändert werden kann.

Mit der Buchung erhält der Benutzer dsa Ticket mit einem Link auf eine Pretix-Seite, die einen weiteren Link enthält. Dieser Link führt zu TREFF.

TREFF-Login mit Pretix-Ticket

Klickt ein Benutzer auf den Link in Pretix, wird zu TREFF weitergeleitet und ein JWT an den Link angehängt.

Achtung Datenschutz

Das JWT enthält lediglich einen Buchungscode und keine persönlichen Daten

Die kryptographische Signatur des JWT wird geprüft, so dass eine Manipulation ausgeschlossen ist.
Da in einer Buchung mehrere Positionen enthalten sein können, sind eine Reihe von Abfragen nötig, um an die konkrete Teilnahme zu kommen:

  1. Die Gesamtliste der Positionen für diesen Buchungscode wird abgefragt, und die konkrete Einzelposition = Teilnahme am SubEvent X ermittelt
  2. Die Details des SubEvents werden abgefragt, um an das Metadatum "TeilnahmeLink" zu gelangen

An dieser Stelle wird geprüft, ob der Raum bereits läuft und wenn nicht, wird dem Nutzer die übliche Sicht miden nächsten 3 Terminen für diesen Raum gezeigt.

Wenn der Raum läuft und betreten werden kann, geht es wie folgt weiter:

  1. Es wird geprüft, ob der Raum bereits einen Teilnehmer mit der UserID = Pretix-orderPositionUniqueId hat. Falls ja → Fehlermeldung und Ende
  2. Bei Pretix wird die ID der Check-In-Liste für dieses Event abgefragt
  3. Das Ticket wird auf die Check-In-Liste gesetzt
    1. Dabei wird der Nonce auf das heutige Datum gesetzt, so dass mehrfache Check-Ins an diesem Tag noch möglich sind (z.B. bei einem Verbindungsabbruch).
    2. Die bei der Buchung angegebenen Daten Name, Rufzeichen, VideoConsent werden ermittelt
  4. Der BBB-JoinRequest wird mit den ermittelten Daten gefüllt. Die UserID wird auf die orderPositionUniqueId aus Pretix gesetzt (sonst: random) und der Nutzer in den Raum eingeloggt.

Ein erneuter Login mit dem Ticket-Link z.B. bei einem Verbindungsverlust ist möglich, sobald BBB den Nutzer nicht mehr in der Raumliste führt. Tests haben ergeben, dass dies ca. 120 Sekunden dauert.
Da der Pretix-Nonce auf das aktuelle Datum gesetzt wird, sind wiederholte CheckIns und damit Logins nur am selben Kalendertag möglich.


BBB hat keine eigenen Mechanismen um einen Mehrfachlogin zu verhindern. Daher prüft Treff anhand der vergebenen UserID, ob es sich um einen doppel-Login handelt.


  • No labels