条件付きで新規ユーザー登録を許可する

こんにちは、

Discourse の管理・開発は初心者で、Ruby はまだ話せませんが(学ぶ意欲は満ちています)、最初のタスクとして Discourse のインストールを設定し、公式の Docker イメージを使って Digital Ocean で成功させました。ここまで順調です。このように簡単にしてくださった方々に感謝します!

次のタスクは私にとってより挑戦的です。ある非営利団体のために Discourse を設定するボランティアを引き受けたのですが、ユーザー登録と参加をその団体のメンバーに限定したいと考えています。そのため、新規ユーザー作成のプロセスを何らかの方法で変更するか、フックするか、あるいは置き換えて、提出されたメールアドレスが既存組織の現在のメンバーと一致するか、メンバーの有効期限が未来にあるかをプログラムで確認する必要があります。

この団体は NeonCRM を使用しており、彼らが提供する API を使えばこの検証は比較的容易です。Discourse は、手動でできることはすべて API でも実行できる仕組みを提供していると理解しています。つまり、理論的にはやりたいことは可能だと言えますよね?問題は、最適なアプローチが何かということです。

例えば、Discourse でイベントリスナー(またはプラグイン?)を作成して、新規ユーザーのサインアップを検知し、この検証ロジックを実行し、登録を中断して「申し訳ありませんが、XYZ 協会のメンバーである必要があります」といった分かりやすいメッセージを表示できるのであれば、それは素晴らしいことです。

あるいは、私がよく知っている PHP で独自のユーザー登録ページを作成し、両方の API を使う方法も考えられます。その場合、Discourse のインストールを何らかの方法で改変して、サインアップページが私のカスタム版にリダイレクトするようにする必要があります。

全体としての戦略がどうあるべきか、そしてどこから学び始めるべきかについて、いくつかの提案をいただければ幸いです。

よろしくお願いいたします!

「いいね!」 2

登録をメールドメインで制限できます。ユーザーがすべて同じドメインを使用している場合、その組織外からの参加はできません。設定で「許可されたメールドメイン」を検索してください。

ユーザーがアカウント登録に使用しなければならないメールドメインのリスト(パイプ記号で区切ります)。警告:リストに記載されていないメールドメインを持つユーザーは登録できません!

「いいね!」 2

ああ、もし可能なドメインのセットが妥当なサイズに限定されていれば、その案は機能するかもしれません。しかし、この場合はメールアドレスが任意です。ご提案ありがとうございます。

「いいね!」 2

これは役立ちますか?

@Jonathan5 ご提案ありがとうございます。そのスレッドを確認しましたが、正直に言ってまるで地獄のようです。それに加え、この協会のメンバーは NeonCRM を直接使って何かへログインするのではなく、協会管理者のみがそれを行っています。複雑ですね。

別のアイデアがあります。Discourse を招待制のままにしておき、ログインページのテキストを「my.example.org/discourse-invitation にアクセスして招待をリクエストしてください」というように変更するのはどうでしょうか。その URL には、NeonCRM API を使って新規ユーザーの会員資格を検証し、検証が成功すれば Discourse API を使ってユーザーを作成し、招待を送信するスクリプトを配置します。私の考え方は妥当だと思いますが、いかがでしょうか?