Abfrage zur Unterstützung einer reibungslosen Anmeldung bei einer persönlichen Veranstaltung über mailto und gestufte Benutzer

Diese Abfrage gibt alle Benutzer (einschließlich ihrer E-Mails) zurück, die per PM / E-Mail an eine Gruppen-Inbox schreiben, mit Ausnahme der Mitglieder der Gruppe.
Der Anwendungsfall ist eine reibungslose Möglichkeit, Personen auf einer physischen Veranstaltung zu ermöglichen, einen gestaffelten Benutzer für meine Website zu erstellen.

Ich habe festgestellt, dass auf einer persönlichen Veranstaltung viele potenzielle Benutzer Schwierigkeiten haben, den Registrierungsprozess abzuschließen (der mindestens die Eingabe ihrer E-Mail-Adresse (korrekt), die Auswahl eines Benutzernamens und die Generierung eines Passworts umfasst. Er erfordert auch die Validierung der E-Mail und die anschließende Anmeldung. Dies ist eine große Bitte, wenn man mit Leuten plaudert / einem Vortragenden zuhört / isst / usw.!

Dies kann mit OAuth2 etwas gemildert werden, aber es gibt immer noch einiges zu tun und die technisch weniger versierten scheinen auch damit Schwierigkeiten zu haben.

Meine Lösung

  1. Erstellen Sie eine halbprivate Gruppe mit einer einprägsamen E-Mail-Adresse (z. B. join@mycommunity.url)

  2. Präsentieren Sie einen QR-Code, der einen mailto:-Link zu dieser Adresse kodiert

  3. Stellen Sie die guten Leute ein, die die anschließende Aufnahme dieser Personen in die Gruppe verwalten werden

  4. Fügen Sie die folgende Abfrage zu Data Explorer hinzu und gewähren Sie der Gruppe Zugriff:

-- [params]
-- string :group_name

WITH group_members AS (
    SELECT gu.user_id
    FROM group_users gu
    JOIN groups g ON g.id = gu.group_id
    WHERE g.name = :group_name
),

non_group_users AS (
    SELECT u.id, u.username, ue.email, u.created_at
    FROM users u
    JOIN user_emails ue ON ue.user_id = u.id
    WHERE NOT EXISTS (
        SELECT 1
        FROM group_members gm
        WHERE u.id = gm.user_id
    ) AND ue.primary = TRUE
),

group_messages AS (
    SELECT tg.topic_id
    FROM topic_allowed_groups tg
    JOIN groups g ON g.id = tg.group_id
    WHERE g.name = :group_name
),

group_message_participants AS (
    SELECT gm.topic_id, tau.user_id AS tau_user_id FROM group_messages gm
    JOIN topic_allowed_users tau ON tau.topic_id = gm.topic_id
    JOIN non_group_users ngu ON ngu.id = tau.user_id
)

SELECT ngu.username, ngu.email, ngu.created_at FROM group_message_participants gmp
JOIN non_group_users ngu ON ngu.id = gmp.tau_user_id
GROUP BY ngu.username, ngu.email, ngu.created_at
ORDER BY ngu.username

Es gibt danach noch einiges an Nacharbeit, aber zumindest erfassen Sie ihre E-Mail-Adressen zuverlässig auf eine Weise, die vom Benutzer nur zwei oder drei Klicks / Berührungen erfordert!

3 „Gefällt mir“