外部データベースに登録されているメールアドレスのみでアカウントを作成

外部のウェブサイトで登録済みのユーザーのみが、Discourseフォーラムでアカウントを作成できるようにしたいと考えています。私のウェブサイトには認証機能がなく、単にSQLデータベースに登録する仕組みしかないため、SSO APIは使えないと考えています。
サインアップ時に条件を設けて、私のウェブサイト(SQLデータベース)に登録済みの人だけがサインアップできるようにすることは可能でしょうか?

Discourseの専門家ではありませんが、これを処理する方法は多数あり、その中で私が多分機能するだろうと考えて試しに検討してみたい方法は以下の通りです:

  1. 新しいDiscourseユーザーには承認を必須にする
  2. リモートウェブサイトまたはサーバーレス環境でスクリプトを開発し、データベースから人物を検索して、Discourse APIを呼び出し、新しいユーザーを承認または却下する
  3. 新しいユーザーが登録された際に、Discourseがそのスクリプトにウェブフックを呼び出すように設定する
  4. ユーザーに対して何が起こっているかをより明確に伝えるよう、Discourseの文言をカスタマイズする

基本的に、Discourseは優れたウェブフックとAPIを提供しているため、あなたが得意とする言語でリモートにカスタムスクリプトを書きながらそれらを利用できます。

もしRubyでDiscourseプラグインを書くことに抵抗がなければ、それも機能しますが、個人的にはその方法ではなく、こちらの方が簡単だと考えます。

これを実現する方法の一つとして、サイト設定で「招待のみ」および「ユーザー承認必須」を有効にすることがあります。これらの設定を有効にすると、サイトへのアカウント作成が許可されるのは、サイトへの招待を受けたユーザーのみになります。招待の送信はスタッフユーザーのみが行うことができ、「ユーザー承認必須」設定により、スタッフ以外のユーザーが招待を送信することが防止されます。

その後、SQL データベースからメールアドレスを取得し、それらを CSV ファイルに追加できます。そのファイルを使用して、以下の手順に従ってユーザーをまとめて招待することができます:ユーザーの大量招待の送信

「いいね!」 1

Jonathan さん、アイデアをありがとうございます。
サインアップの承認または却下に使用する API を見つけることができませんでした。

サイモン、ありがとう。
問題はデータベースが広大で更新可能だということだ。

GitHub の Discourse コードベースを検索したところ、「approve_user」アクションが見つかりました(例:put "/review/#{reviewable.id}/perform/approve_user.json")。必要な reviewable ID を取得するには、まず reviewables を取得する必要があるようです。

「いいね!」 2