Einen Benutzer einladen, aber sein Profil programmatisch vervollständigen

Hallo!

Wir senden unseren Nutzern eine Discourse-Einladung, sobald sie in unserer App ein Konto erstellt haben. Wir haben bereits ihren Namen und die für unsere Community erforderlichen benutzerdefinierten Felder, aber der Nutzer muss diese auf Discourse erneut eingeben.

Gibt es eine Möglichkeit, diese Felder im Rahmen ihres Profils automatisch auszufüllen?

Vielen Dank!

1 „Gefällt mir“

Ich denke, am besten wäre es, wenn Ihre App der SSO-Server wäre. Wenn Sie das nicht möchten, können Sie Ihre App über die API den Benutzer erstellen lassen und diese Einstellungen einbeziehen. Wie Sie das umsetzen, erfahren Sie in Wie man die Discourse-API reverse-engineert.

2 „Gefällt mir“

Wir möchten keine Benutzer über die API erstellen, da der Benutzer ein Passwort festlegen und seinen Benutzernamen selbst wählen soll. Ich habe untersucht, ob man einen gestaffelten Benutzer mit allen Daten erstellen kann, aber dies scheint über die API nicht möglich zu sein.

Die andere Option, die mir einfällt, besteht darin, Einladungen so zu erweitern, dass benutzerdefinierte Felder und Profilinformationen unterstützt werden.

Vielleicht ein Plugin, das die Felder aus deiner App über einen Webhook oder eine API-Aufruf abruft? Das Plugin könnte beispielsweise get yoursite/user/<email_address> ausführen und die Benutzerfelder füllen, wenn der Benutzereintrag aktualisiert wird. So etwas in der Art. SSO scheint immer noch die beste Lösung zu sein.

Ja, bitte schau dir Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso) an. Dies ist der exakte Anwendungsfall für Single Sign-On.

Mit SSO müsstest du sie jedoch nicht einladen. Sie würden einfach deine Discourse-Instanz besuchen und automatisch angemeldet werden, wenn sie bereits in deiner App angemeldet sind. Falls sie noch nicht in deiner App angemeldet sind, leitet Discourse sie zur Anmeldung in deiner App weiter, und danach werden sie automatisch zurück zu Discourse weitergeleitet.

2 „Gefällt mir“

Die Sache ist die: Wir nutzen Discourse als unseren SSO-Anbieter, und das funktioniert für uns gut. Aber ja, ich stimme zu, es wäre einfacher, wenn Discourse einen SSO-Anbieter konsumieren würde.

@blake Ich überlege noch, wie wir das umsetzen können, da wir Discourse als SSO-Anbieter nutzen. Ich möchte im Moment nicht auf etwas anderes wechseln, da das viel mehr Arbeit bedeuten würde. Hast du andere Ideen? Es ist kein Problem, wenn wir benutzerdefinierten Code schreiben müssen, aber wir möchten so wenige Änderungen wie möglich an unserer aktuellen Einrichtung vornehmen.

Vielen Dank!

1 „Gefällt mir“

Ich bin nur verwirrt durch dein Setup und diese zwei Sätze, denn dann hast du ja kein Single-Sign-On, sondern ein Double-Sign-On?

Wenn Discourse dein SSO wäre, müssten neue Nutzer deiner App zuerst zu Discourse weitergeleitet werden, um dort ein Konto zu erstellen, und anschließend zurück zu deiner App, sobald sie authentifiziert sind. Dann wären alle Informationen an einem einzigen Ort.

Basierend auf meinem aktuellen Verständnis würde ich deine App also in einen SSO-Anbieter verwandeln und Discourse diesen nutzen lassen. Oder ich leite die Nutzer deiner App dazu an, sich zuerst in Discourse anzumelden und sie dann zurück zu deiner App weiterzuleiten, denn anscheinend ist das aktuell nicht so eingerichtet?

Alternativ, wenn du ein Dual-Sign-On-Setup möchtest, könntest du nach der Anmeldung in deiner App automatisch über die API einen entsprechenden Benutzer in Discourse mit einem zufälligen Passwort erstellen, das du dem Nutzer niemals gibst, und deren Profilinformationen, die sie in deiner App eingegeben haben, automatisch ausfüllen. Anschließend leitest du sie zur Passwort-Reset-Seite in Discourse für ihr neues Konto weiter, anstatt ihnen eine Einladung zu senden.

2 „Gefällt mir“

Wir führen die Registrierung über unsere App durch, aber unsere App verfügt nicht über eine Sitzungsverwaltung. Wir belasten einfach den Nutzer und speichern seine Informationen in unserer Datenbank.

Wir müssen den Nutzer zwingen, zuerst ein Konto zu erstellen, und genau diesen Schritt wollen wir eliminieren, weil wir es so einfach wie möglich machen möchten.

Das ist der Aufwand, den wir nicht betreiben wollen, denn das Hinzufügen von Sitzungsverwaltung, Passwortwiederherstellung, Zwei-Faktor-Authentifizierung und all den Funktionen, die Discourse bietet, wird sehr viel Arbeit bedeuten.

Das ist nicht das, was wir wollen.

Das habe ich anfangs gemacht, aber wir müssten einen zufälligen Benutzernamen festlegen, und das wollen wir nicht. Obwohl es funktionieren wird, möchten wir, dass der Nutzer sein Konto noch personalisieren kann, bevor er die Community nutzt.

Aber ja, ich schätze, die Antwort ist immer noch, einen externen SSO-Anbieter zu verwenden. Ich werde diesen Weg gehen und aufhören, darüber nachzudenken, wie ich Discourse nutzen und es so funktionieren lassen kann, wie wir es wollen.

Danke für die Hilfe, @blake!

1 „Gefällt mir“

Oder verzichten Sie auf Ihre App und lassen Sie Discourse Subscriptions das Geld verwalten?

2 „Gefällt mir“