Bester Weg, einen vorhandenen Benutzer über die API von einem verbundenen Client aus zu aktualisieren oder zu erstellen?

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?
    Weder all.json noch der Query-String-Parameter email sind dokumentiert, und ich habe nur sehr wenige Beispiele gefunden, aber dieser Beitrag scheint anzudeuten, dass dies der beste Weg ist.
1 „Gefällt mir“

Ich bin nicht so ein Experte wie manche, aber ich denke schon.

Sie sieht für mich richtig aus. Die beste und immer aktuelle Dokumentation finden Sie unter Reverse engineer the Discourse API.

1 „Gefällt mir“