Hier ist der Anwendungsfall, mit dem viele Leute sicherlich schon konfrontiert waren:
- Eine Reihe von Benutzern in Discourse haben
- Ein externes System (Dienstanbieter, Drupal), das eine API verwendet, um Discourse-Benutzer zu erstellen und Gruppenmitgliedschaften zu verwalten
- Drupal hat eine teilweise überlappende Menge von Benutzern. D.h. Benutzer mit derselben E-Mail-Adresse existieren in Discourse und Drupal, sind aber nicht verknüpft
- Drupal verwendet eine API zum Synchronisieren von Benutzern, Gruppen und Mitgliedschaften, da Benutzer möglicherweise nie SSO verwenden, um auf Discourse zuzugreifen, sondern sich auf E-Mails verlassen
Aktuelles Verhalten:
- Discourse lehnt den API-Aufruf zur Erstellung eines Discourse-Benutzers manchmal ab, da bereits ein Discourse-Benutzer mit derselben E-Mail-Adresse existiert
Gewünschtes Verhalten:
- Discourse verknüpft den vorhandenen Discourse-Benutzer über die E-Mail-Adresse mit dem Drupal-Benutzer
Lösungsvorschlag:
- Abfragen des Discourse API-Endpunkts
/admin/users/list/all.json?email=$email, um alle Benutzer mit übereinstimmender E-Mail-Adresse abzurufen - Wenn der übereinstimmende Benutzer existiert
- Die vorhandenen Benutzer verknüpfen (Drupal-Seite)
- Andernfalls
- Einen neuen Discourse-Benutzer erstellen
Fragen
- Scheint dies eine vernünftige Lösung zu sein, oder gibt es einen besseren Weg, dies zu tun?
- Ist die API-Abfrage korrekt formuliert?
Wederall.jsonnoch der Query-String-Parameteremailsind dokumentiert, und ich habe nur sehr wenige Beispiele gefunden, aber dieser Beitrag scheint anzudeuten, dass dies der beste Weg ist.