| 概要 | Discourse Member Application は、Discourse コミュニティに参加する前に、見込みメンバー向けの構造化された申請プロセスを実行できます。 | |
| リポジトリリンク | R23DPrinting-group / discourse-member-application · GitLab | |
| インストールガイド | Discourse へのプラグインのインストール方法 |
discourse-member-application — プライベートコミュニティ向けの招待前申請システム
discourse-member-application を使用すると、Discourse コミュニティに参加する前に、見込みメンバー向けの構造化された申請プロセスを実行できます。申請者は /apply でカスタマイズ可能な公開フォームに記入し、管理者は提出物をレビューして承認または却下します。承認された申請者には、自動的にプライベートな招待リンクが送信されます。
GitLab: R23DPrinting-group / discourse-member-application · GitLab
ストーリー
私は招待制モードを使用するプライベートコミュニティを運営しています。以前は、Google フォーム、スプレッドシート、招待リンクの手動コピー&ペーストなど、メンバーシップ申請をマニュアルで管理していました。機能はしていましたが、スケールせず、コミュニティ自体から切り離された印象がありました。
招待前の申請を処理できる Discourse プラグインを探しましたが、条件に合うものが見つかりませんでした。そこで、このプラグインを自作しました。
デモ
機能
カスタマイズ可能な申請フォーム
フォームは、管理パネルの「フィールド」タブを通じて完全に構築されます(コード不要)。対応フィールドタイプ:テキスト、テキストエリア、はい/いいえ、ラジオボタン、チェックボックスグループ、チェックボックス。フィールドにはラベル、ヒント、必須/任意、有効/無効、条件付き表示(特定の値が設定された場合にのみフィールドを表示)をサポートしています。
管理者ダッシュボード
専用プラグインページからすべての申請をレビューおよび管理できます。ステータス(保留中 / 承認済み / 却下済み / 利用済み)でフィルタリング、メールアドレスまたはユーザー名で検索、大規模なリストのページネーションが可能です。申請の詳細を閲覧し、管理者用の非公開メモを追加し、個別または一括で承認・却下できます。
承認フロー
申請を承認すると、単発使用の Discourse 招待リンクが生成され、申請者にメールで送信されます。却下した場合は、オプションのフィードバックを含むカスタマイズ可能な却下メールが送信されます。申請者が招待を利用しアカウントを作成すると、申請ステータスが自動的に「利用済み」に更新されます。承認されたメンバーを自動的に Discourse グループに追加するオプションもあります。
分析
「分析」タブには、概要統計(申請総数、承認率、平均レビュー時間)、提出対承認の 12 週間トレンドチャート、提出 → 承認 → 利用のコンバージョンファネルが表示されます。
管理者通知
新しい申請が提出されると、設定されたユーザー名(または空白の場合は全管理者)にプライベートメッセージが送信されます。
カスタマイズ可能な UX
- フォーム上部の導入テキスト(Markdown サポート)
- 提出後の
/apply/success表示ページ(カスタマイズ可能なメッセージ、Markdown サポート) - ログインページおよびログイン必須のホームページに表示される「参加申請」ボタン(切り替え可能)
- 申請有効期限設定 — 設定された日数後に保留中の申請を自動却下
編集可能なメールテンプレート
提出確認メールと却下メールの両方とも、管理 → カスタマイズ → メールテンプレートから編集可能で、コード変更は不要です。
セキュリティ
レート制限(IP 当たり 1 時間最大 5 件)、重複検出(保留中/承認済みのメールまたはユーザー名での再提出をブロック、既に登録済みのメール/ユーザー名をブロック)、単発使用招待リンク。
設定
インストール
/var/discourse/containers/app.yml に以下を追加します:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://gitlab.com/r23dprinting-group/discourse-member-application.git
その後、再構築します:
cd /var/discourse && ./launcher rebuild app
フォームの設定
インストール後、管理 → プラグイン → メンバー申請 → フィールド に移動して申請フォームを作成します。
このプラグインには、以下のデフォルトフィールドが付属しています(すべて編集または削除可能):
- 希望するユーザー名
- 自分について少し教えてください
- どこで私たちのことを知りましたか?
- 現在、同様のオンラインコミュニティに参加していますか?(はい/いいえ)
- はいの場合、どのコミュニティですか?(条件付き — 上記が「はい」の場合のみ表示)
- ベンダー開示(チェックボックスグループ)
- 誠実さの確認(チェックボックス — システムフィールド、削除不可)
「フィールドを追加」ボタンを使用して新しいフィールドを作成します。上下矢印を使用して順序を変更できます。条件付きフィールドにするには、編集して「表示条件」セクションで親フィールドとトリガー値を選択します。
ワークフロー
- 見込みメンバーがサイトを訪問し、参加申請 をクリックするか、直接
/applyに移動します - フォームに記入して提出 — アカウントは不要
- 管理者にプライベートメッセージ通知が届く
- 管理者が 管理 → プラグイン → メンバー申請 → 申請 で申請をレビュー
- 管理者が承認 → 申請者に単発使用リンク付きの招待メールが届く
- 申請者が招待を利用しアカウントを作成すると、申請ステータスが 利用済み に更新される
設定項目
| 名前 | 説明 |
|---|---|
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 |
申請フォーム上部に表示される導入テキスト。Markdown サポート。空白の場合は非表示。 |
member_application_success_message |
提出後の /apply/success ページに表示されるメッセージ。Markdown サポート。 |
注意事項
- コミュニティ非依存 — すべてのデフォルトフィールドテキストは「フィールド」タブで設定可能
- Discourse の
login_required/ 招待制モードと互換性あり - MIT ライセンス
- Discourse 2026.3.0 でテスト済み
GitLab で Issues、PR、機能リクエストを歓迎します。