Benutzer per Webhook mit E-Mail zur Gruppe hinzufügen

Guten Tag,

Ich versuche, Benutzer von WordPress über einen Webhook zu privaten Gruppen in Discourse hinzuzufügen.

Ich verwende das WP Discourse-Plugin als SSO-Login-Methode und erlaube Benutzern nicht, ihren Benutzernamen in Discourse zu ändern. Ich habe dies getan, weil ich dachte, dass ich auf diese Weise den Benutzernamen von WordPress verwenden könnte, um sie einer Gruppe in Discourse hinzuzufügen. Denn ich dachte, sie wären dieselben.

Das Problem ist, dass bei der automatischen Generierung des Benutzernamens in WordPress manchmal ihre E-Mail als Benutzername verwendet wird. Discourse erlaubt dies jedoch nicht bei Benutzernamen, sodass der Benutzername bei “@” unterbrochen wird.

Beispiel:
WordPress-E-Mail: jhon@gmail.com
WordPress-Benutzername (automatisch generiert): jhon@gmail.com
Discourse-Benutzername (generiert über WP Discourse SSO): jhon

Dies erlaubt mir nicht, den WordPress-Benutzer zum Hinzufügen zu einer Gruppe zu verwenden.

Gibt es einen einfacheren Weg, dies zu tun?

Es wäre großartig, Benutzer per E-Mail anstatt per Benutzername zu einer Gruppe hinzufügen zu können. Die E-Mail ist in jeder Anwendung (CRM, WordPress usw.) immer verfügbar, sodass der zusätzliche Schritt, eine “GET”-Anfrage an die API zu senden, um den Benutzernamen aus dieser E-Mail abzurufen und sie dann in die Gruppe einzufügen, nicht erforderlich ist.

Ich verwende Fluent Forms, um diese Daten von WordPress an den Webhook zu senden, wenn sie ein Formular senden, daher kann ich die GET-Anfrage nicht ausführen und dann den Benutzernamen PUT.

Vielen Dank!

1 „Gefällt mir“

Wenn ich Sie richtig verstehe, machen Sie Folgendes:

  1. Verwendung von DiscourseConnect mit WordPress als Anbieter und Discourse als Client.
  2. Verwendung eines Webhooks in WordPress, um Benutzer in Gruppen in Discourse zu versetzen (z. B. PUT an /g/:group_name/members (API-Referenz)) als Ergebnis einer Formularaktion.

Wenn das richtig ist, können Sie den Discourse-Benutzernamen in WordPress im Benutzer-Metafeld discourse_username finden, also

get_user_meta($user_id, 'discourse_username', true);

Verwenden Sie diesen, um den Benutzernamen für die PUT-Anfrage nach der Formularaktion zu erhalten.
Sie können sicherstellen, dass discourse_username für Ihre Benutzer ausgefüllt ist, indem Sie die Benutzer-Webhooks im WP Discourse-Plugin verwenden (beachten Sie, dass wir über andere Webhooks sprechen als die, die Sie derzeit in Ihrem Formular verwenden).

2 „Gefällt mir“