Discourse メンバー申請

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

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

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

:link: GitLab: R23DPrinting-group / discourse-member-application · GitLab


ストーリー

私は招待制モードを使用するプライベートコミュニティを運営しています。以前は、Google フォーム、スプレッドシート、招待リンクの手動コピー&ペーストなど、メンバーシップ申請をマニュアルで管理していました。機能はしていましたが、スケールせず、コミュニティ自体から切り離された印象がありました。

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


デモ


機能

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

:magnifying_glass_tilted_left: 管理者ダッシュボード
専用プラグインページからすべての申請をレビューおよび管理できます。ステータス(保留中 / 承認済み / 却下済み / 利用済み)でフィルタリング、メールアドレスまたはユーザー名で検索、大規模なリストのページネーションが可能です。申請の詳細を閲覧し、管理者用の非公開メモを追加し、個別または一括で承認・却下できます。

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

:bar_chart: 分析
「分析」タブには、概要統計(申請総数、承認率、平均レビュー時間)、提出対承認の 12 週間トレンドチャート、提出 → 承認 → 利用のコンバージョンファネルが表示されます。

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

:artist_palette: カスタマイズ可能な UX

  • フォーム上部の導入テキスト(Markdown サポート)
  • 提出後の /apply/success 表示ページ(カスタマイズ可能なメッセージ、Markdown サポート)
  • ログインページおよびログイン必須のホームページに表示される「参加申請」ボタン(切り替え可能)
  • 申請有効期限設定 — 設定された日数後に保留中の申請を自動却下

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

:locked: セキュリティ
レート制限(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

フォームの設定

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

このプラグインには、以下のデフォルトフィールドが付属しています(すべて編集または削除可能):

  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 申請フォーム上部に表示される導入テキスト。Markdown サポート。空白の場合は非表示。
member_application_success_message 提出後の /apply/success ページに表示されるメッセージ。Markdown サポート。

注意事項

  • コミュニティ非依存 — すべてのデフォルトフィールドテキストは「フィールド」タブで設定可能
  • Discourse の login_required / 招待制モードと互換性あり
  • MIT ライセンス
  • Discourse 2026.3.0 でテスト済み

GitLab で Issues、PR、機能リクエストを歓迎します。

:link: R23DPrinting-group / discourse-member-application · GitLab

「いいね!」 11

更新: リポジトリが GitLab へ移動しました。上記投稿内のすべてのリンクが更新されました。

:link: https://gitlab.com/r23dprinting-group/discourse-member-application

「いいね!」 1