Discourseメンバー申請

:information_source: 概要 Discourse Member Applicationを使用すると、Discourseコミュニティに参加する前の見込みメンバーに対して、構造化された申請プロセスを実行できます。
:hammer_and_wrench: リポジトリリンク GitHub - R23DPrinting/discourse-member-application · GitHub
:open_book: インストールガイド Discourseにプラグインをインストールする方法

discourse-member-application — プライベートコミュニティ向けの招待前申請システム

discourse-member-applicationを使用すると、Discourseコミュニティに参加する前の見込みメンバーに対して、構造化された申請プロセスを実行できます。申請者は/applyでカスタマイズ可能な公開フォームに記入し、管理者は提出内容を確認して承認または却下します。承認された申請者には、自動的にプライベート招待リンクが送信されます。

:link: GitHub: GitHub - R23DPrinting/discourse-member-application · GitHub


背景

私はDiscourseの招待制モードを使用しているプライベートコミュニティを運営しています。メンバーシップの申請は手動で管理していました。Googleフォーム、スプレッドシート、招待リンクの手動コピー&ペーストです。機能はしていましたが、スケーラビリティに欠け、コミュニティ自体から切り離されているように感じていました。

招待前申請を処理できるDiscourseプラグインを探しましたが、見つかりませんでした。そこで、これを自作しました。


デモ


特徴

:clipboard: カスタマイズ可能な申請フォーム
フォームは、管理パネルの「フィールド」タブから完全に構築されます。コードは不要です。サポートされるフィールドタイプは、テキスト、テキストエリア、はい/いいえ、ラジオボタン、チェックボックスグループ、およびチェックボックスです。フィールドは、ラベル、ヒント、必須/オプション、有効/無効、および条件付き表示(他のフィールドが特定の値を持っている場合にのみフィールドを表示)をサポートします。

:magnifying_glass_tilted_left: 管理ダッシュボード
専用のプラグインページから、すべての申請を確認・管理します。ステータス(保留中/承認済み/却下済み/引き換え済み)でフィルタリングし、メールアドレスまたはユーザー名で検索し、大規模なリストをページングできます。完全な申請詳細の表示、プライベート管理ノートの追加、個別の承認または一括承認が可能です。

:white_check_mark: 承認フロー
申請を承認すると、単一使用のDiscourse招待が生成され、申請者にメールで送信されます。却下すると、オプションのフィードバック付きでカスタマイズ可能な却下メールが送信されます。申請者が招待を引き換え、アカウントを作成すると、申請ステータスは自動的に「引き換え済み」に更新されます。承認されたメンバーは、オプションでDiscourseグループに自動的に追加できます。

:bar_chart: 分析
分析タブには、概要統計(総申請数、承認率、平均レビュー時間)、提出数と承認数の12週間の傾向チャート、および提出 → 承認 → 引き換え済みのコンバージョンファネルが表示されます。

:bell: 管理者通知
新しい申請が提出されると、設定されたユーザー名(または空白の場合はすべてのアドミン)にプライベートメッセージが送信されます。

:artist_palette: 設定可能なUX

  • フォーム上部の紹介テキスト(マークダウン対応)
  • 提出後の/apply/successのサクセスページ(メッセージはカスタマイズ可能、マークダウン対応)
  • ログインページおよびログイン必須のホームページの「参加申請」ボタン(トグル可能)
  • 申請の有効期限 — 設定可能な日数の後、保留中の申請を自動的に却下

:e_mail: 編集可能なメールテンプレート
提出確認メールと却下メールの両方は、管理 → カスタマイズ → メールテンプレートから編集できます。コードの変更は不要です。

:locked: セキュリティ
レート制限(IPあたり1時間あたり5件の提出)、重複検出(保留中/承認済みのメールまたはユーザー名での再提出をブロック、および既に登録されているメール/ユーザー名のブロック)、および単一使用の招待。


設定

インストール

/var/discourse/containers/app.ymlに以下を追加します。

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/R23DPrinting/discourse-member-application.git

その後、再ビルドします。

cd /var/discourse && ./launcher rebuild app

フォームの設定

インストール後、管理 → プラグイン → メンバー申請 → フィールドに移動して、申請フォームを作成します。

このプラグインには、これらのデフォルトフィールドが同梱されています(すべて編集または削除可能です)。

  1. 希望のユーザー名
  2. ご自身について簡単に教えてください
  3. 当コミュニティをどちらで知りましたか?
  4. 現在、他に類似のオンラインコミュニティに所属していますか? (はい/いいえ)
  5. はいの場合、どちらですか? (条件付き — 上記が「はい」の場合にのみ表示)
  6. ベンダー開示 (チェックボックスグループ)
  7. 誠実性の確認 (チェックボックス — システムフィールド、削除不可)

フィールドを追加ボタンを使用して新しいフィールドを作成します。上下の矢印を使用して順序を変更します。フィールドを条件付きにするには、それを編集し、「~の場合のみ表示」セクションを使用して親フィールドとトリガー値を設定します。

ワークフロー

  1. 見込みメンバーがサイトにアクセスし、「参加申請」をクリックします(または/applyに直接移動します)。
  2. アカウントは不要で、フォームに記入して送信します。
  3. 管理者にプライベートメッセージ通知が届きます。
  4. 管理者は管理 → プラグイン → メンバー申請 → 申請で申請を確認します。
  5. 管理者が承認すると、申請者に単一使用リンク付きの招待メールが送信されます。
  6. 申請者が招待を引き換え、アカウントを作成すると、申請ステータスが引き換え済みに更新されます。

設定項目

名前 説明
member_application_enabled /applyでの申請フォームを有効/無効にします
member_application_notify_usernames 新しい提出があった場合にPMで通知する、コンマ区切りのユーザー名。空白のままにすると、すべてのアドミンに通知されます。
member_application_invite_group 承認時に招待に追加するグループ名(スキップするには空白のままにします)
member_application_expiry_days 保留中の申請を自動的に却下する日数(0 = 無期限)
member_application_expiry_notify 自動有効期限切れの申請時に却下メールを送信します
member_application_show_apply_button ログインページとログイン必須のホームページに「参加申請」ボタンを表示します
member_application_apply_button_text 「参加申請」ボタンのラベル(デフォルト:「参加申請」)
member_application_intro_text 申請フォームの上部に表示される紹介テキスト。マークダウン対応。空白のままにすると非表示になります。
member_application_success_message 提出後の/apply/successページに表示されるメッセージ。マークダウン対応。

備考

  • コミュニティに依存しない — すべてのデフォルトフィールドテキストは「フィールド」タブから設定可能です
  • Discourseのlogin_required / 招待制モードで動作します
  • MITライセンス
  • Discourse 2026.3.0でテスト済み

問題、PR、機能リクエストはGitHubで歓迎します。

:link: GitHub - R23DPrinting/discourse-member-application · GitHub

「いいね!」 5