Konto nur für E-Mails erstellen, die in meiner externen Datenbank registriert sind

Ich möchte, dass sich nur registrierte Nutzer meiner externen Website in meinem Discourse-Forum anmelden können. Ich glaube nicht, dass ich die SSO-API nutzen kann, da meine Website keine Authentifizierung bietet, sondern lediglich eine Registrierung in einer SQL-Datenbank. Kann ich eine Bedingung beim Registrierungsprozess einrichten, sodass sich nur Personen anmelden können, die bereits in meiner SQL-Datenbank (meiner Website) registriert sind?

Ich bin zwar kein Discourse-Experte, aber es gibt viele Möglichkeiten, dies zu handhaben. Hier ist ein Ansatz, von dem ich erwarte, dass er funktionieren könnte und den ich gerne untersuchen würde:

  1. Genehmigung für neue Discourse-Benutzer erforderlich machen.
  2. Ein Skript auf Ihrer Remote-Website oder in einer serverlosen Umgebung entwickeln, das Ihre Datenbank nach einer Person abfragt und dann die Discourse-API aufruft, um den neuen Benutzer zu genehmigen oder abzulehnen.
  3. Veranlassen, dass Discourse einen Webhook-Aufruf an das Skript tätigt, wenn ein neuer Benutzer registriert wird.
  4. Die Discourse-Formulierung anpassen, um Ihren Benutzern besser zu erklären, was vor sich geht.

Im Grunde verfügt Discourse über gute Webhooks und eine API, sodass Sie diese nutzen können, während Sie Ihr benutzerdefiniertes Skript in einer beliebigen Programmiersprache schreiben, mit der Sie vertraut sind.

Wenn Sie bereit wären, ein Discourse-Plugin in Ruby zu schreiben, würde das ebenfalls funktionieren. Persönlich bin ich das jedoch nicht, daher würde ich diesen Weg als einfacher empfinden.

Eine Möglichkeit, dies umzusetzen, besteht darin, die Site-Einstellungen „Nur auf Einladung

1 „Gefällt mir“

Danke, Jonathan, für deine Idee.
Ich konnte die API nicht finden, die man verwenden muss, um die Anmeldung zu genehmigen oder abzulehnen.

Danke, Simon,
das Problem ist, dass die Datenbank breit und aktualisierbar ist,

Bei der Suche im Discourse-Codebase auf GitHub habe ich eine “approve_user”-Aktion gefunden, z. B. put "/review/#{reviewable.id}/perform/approve_user.json". Es scheint, als müssten Sie zuerst die Reviewables abrufen, um die benötigte Reviewable-ID zu erhalten.

2 „Gefällt mir“