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 URL-Pfad-Bestandteil des Haupt-Events. Ist vorbelegt mit "gutschein", aber da unklar ist, was die Zukunft bringt, ist das parametrisierbar.

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.

Die Gutscheincodes können nach belieben verteilt werden. Auch das Medium ist beliebig: Digital, Print, Glückskekse, Luftballons...
Hauptsache es steht dabei, was man mit dem Code machen soll.

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 in Pretix auch 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 das 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 mit den 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 mit Hinweis auf 2 Minuten (s.u.) und Ende
  2. Bei Pretix wird die ID der Check-In-Liste für die Eventserie "Gutscheine" abgefragt
  3. Das Ticket wird auf die Check-In-Liste gesetzt
    1. Dabei wird der Nonce auf das aktuelle Datum gesetzt, so dass mehrfache Check-Ins an diesem Tag möglich sind (z.B. bei einem Verbindungsabbruch).
    2. Die bei der Buchung angegebenen Daten Name, Rufzeichen, VideoConsent werden ermittelt
  4. Schlägt der Check-In fehl, weil das Ticket bereits an einem anderen Tag benutzt wurde → Fehlermeldung und Ende
  5. 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 Check-Ins 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