Заявка на вступление в 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


История создания

Я управляю закрытым сообществом, использующим режим только по приглашениям в Discourse. Ранее мы обрабатывали заявки вручную — через Google Формы, таблицы и ручное копирование ссылок-приглашений. Это работало, но не масштабировалось и казалось оторванным от самого сообщества.

Я искал плагин для Discourse, который мог бы обрабатывать предварительные заявки до отправки приглашения. Я не нашел подходящего решения, поэтому создал этот плагин.


Демонстрация


Возможности

:clipboard: Настраиваемая форма заявки
Форма создается полностью через вкладку «Поля» в панели администратора — код не требуется. Поддерживаемые типы полей: текст, многострочный текст, да/нет, переключатели (radio), группа флажков и одиночный флажок. Поля поддерживают метки, подсказки, обязательность/необязательность, включение/отключение и условную видимость (показывать поле только если другое поле имеет определенное значение).

:magnifying_glass_tilted_left: Панель администратора
Просмотр и управление всеми заявками на специальной странице плагина. Фильтрация по статусу (В ожидании / Одобрено / Отклонено / Использовано), поиск по email или имени пользователя, пагинация для больших списков. Просмотр полной информации о заявке, добавление частных заметок администратора, одобрение или отклонение по одной или массово.

:white_check_mark: Процесс одобрения
Одобрение заявки генерирует одноразовое приглашение Discourse и отправляет его заявителю по email. Отклонение отправляет настраиваемое письмо об отказе с возможностью добавления обратной связи. Когда заявитель использует приглашение и создает аккаунт, статус заявки автоматически обновляется до «Использовано». Одобренные участники могут автоматически добавляться в группу Discourse.

:bar_chart: Аналитика
Вкладка «Аналитика» отображает сводную статистику (общее количество заявок, процент одобрения, среднее время рассмотрения), график тренда за 12 недель по количеству поданных заявок против одобренных, а также воронку конверсии: подано → одобрено → использовано.

:bell: Уведомления администраторов
При поступлении новой заявки частное сообщение отправляется указанным пользователям (или всем администраторам, если поле оставлено пустым).

:artist_palette: Настраиваемый UX

  • Вступительный текст в верхней части формы (поддерживает Markdown)
  • Страница успеха по адресу /apply/success после отправки с настраиваемым сообщением (поддерживает Markdown)
  • Кнопка «Подать заявку на вступление» на странице входа и на главной странице, требующей входа (можно включить/отключить)
  • Истечение срока заявки — автоматическое отклонение ожидающих заявок через заданное количество дней

:e_mail: Редактируемые шаблоны писем
И письмо-подтверждение отправки, и письмо об отказе можно редактировать через Админ → Настроить → Шаблоны писем — изменение кода не требуется.

:locked: Безопасность
Ограничение частоты запросов (5 заявок с одного IP в час), обнаружение дубликатов (блокирует повторную отправку при наличии ожидающей или одобренной заявки с тем же email или именем пользователя, а также блокирует уже зарегистрированные email/имена пользователей) и одноразовые ссылки-приглашения.


Конфигурация

Установка

Добавьте следующее в ваш файл /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 Имена пользователей через запятую для уведомления через ЧС при новой заявке. Оставьте пустым для уведомления всех администраторов.
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.

Примечания

  • Независимо от сообщества — весь текст полей по умолчанию настраивается через вкладку «Поля»
  • Работает в режиме login_required / только по приглашениям в Discourse
  • Лицензия MIT
  • Протестировано на версии Discourse 2026.3.0

Проблемы, pull-запросы и предложения по новым функциям приветствуются на GitLab.

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

9 лайков

Обновление: Репозиторий перемещён в GitLab. Все ссылки в вышеуказанном посте обновлены.

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

1 лайк