Solicitud de miembro de Discourse

:information_source: Resumen Discourse Member Application te permite ejecutar un proceso de solicitud estructurado para los posibles miembros antes de que se unan a tu comunidad de Discourse.
:hammer_and_wrench: Enlace al Repositorio GitHub - R23DPrinting/discourse-member-application · GitHub
:open_book: Guía de Instalación Cómo instalar plugins en Discourse

discourse-member-application — Un Sistema de Solicitud Previa a la Invitación para Comunidades Privadas

discourse-member-application te permite ejecutar un proceso de solicitud estructurado para los posibles miembros antes de que se unan a tu comunidad de Discourse. Los solicitantes rellenan un formulario público personalizable en /apply, los administradores revisan las solicitudes y las aprueban o rechazan, y a los solicitantes aprobados se les envía automáticamente un enlace de invitación privado.

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


La Historia

Administro una comunidad privada que utiliza el modo de solo invitación de Discourse. Gestionábamos las solicitudes de membresía manualmente: un Formulario de Google, una hoja de cálculo, copiar y pegar enlaces de invitación a mano. Funcionaba, pero no escalaba y se sentía desconectado de la comunidad en sí.

Busqué un plugin de Discourse que pudiera manejar solicitudes previas a la invitación. No encontré uno que encajara. Así que construí este.


Demo


Características

:clipboard: Formulario de Solicitud Personalizable
El formulario se construye completamente a través de una pestaña de Campos en el panel de administración; no se requiere código. Tipos de campo admitidos: texto, área de texto, sí/no, radio, grupo de casillas de verificación y casilla de verificación. Los campos admiten etiquetas, sugerencias, obligatorio/opcional, habilitar/deshabilitar y visibilidad condicional (mostrar un campo solo cuando otro campo tiene un valor específico).

:magnifying_glass_tilted_left: Panel de Administración
Revisa y gestiona todas las solicitudes desde una página de plugin dedicada. Filtra por estado (Pendiente / Aprobado / Rechazado / Canjeado), busca por correo electrónico o nombre de usuario y pagina a través de listas grandes. Visualiza los detalles completos de la solicitud, añade notas privadas de administrador y aprueba o rechaza individualmente o en bloque.

:white_check_mark: Flujo de Aprobación
Aprobar una solicitud genera una invitación de un solo uso de Discourse y se la envía por correo electrónico al solicitante. Rechazar envía un correo electrónico de rechazo personalizable con comentarios opcionales. Cuando el solicitante canjea su invitación y crea una cuenta, el estado de la solicitud se actualiza automáticamente a “Canjeado”. Opcionalmente, se puede añadir a los miembros aprobados a un grupo de Discourse automáticamente.

:bar_chart: Analíticas
La pestaña Analíticas muestra estadísticas resumidas (solicitudes totales, tasa de aprobación, tiempo promedio de revisión), un gráfico de tendencia de 12 semanas de envíos vs aprobaciones, y un embudo de conversión de enviado → aprobado → canjeado.

:bell: Notificaciones al Administrador
Cuando se envía una nueva solicitud, se envía un mensaje privado a los nombres de usuario configurados (o a todos los administradores si se deja en blanco).

:artist_palette: UX Configurable

  • Texto introductorio en la parte superior del formulario (admite markdown)
  • Página de éxito en /apply/success después del envío con un mensaje configurable (admite markdown)
  • Botón “Solicitar unirse” en la página de inicio de sesión y en la página de inicio que requiere inicio de sesión (conmutable)
  • Caducidad de la solicitud: rechaza automáticamente las solicitudes pendientes después de un número configurable de días

:e_mail: Plantillas de Correo Electrónico Editables
Tanto la confirmación de envío como los correos electrónicos de rechazo son editables a través de Administrador → Personalizar → Plantillas de Correo Electrónico; no se necesitan cambios de código.

:locked: Seguridad
Límite de velocidad (5 envíos por IP por hora), detección de duplicados (bloquea reenvíos con correo electrónico o nombre de usuario pendiente/aprobado, y bloquea correos electrónicos/nombres de usuario ya registrados) e invitaciones de un solo uso.


Configuración

Instalación

Añade a tu /var/discourse/containers/app.yml:

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

Luego reconstruye:

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

Configuración de Tu Formulario

Después de la instalación, ve a Admin → Plugins → Member Application → Fields para construir tu formulario de solicitud.

El plugin se envía con estos campos predeterminados (todos editables o eliminables):

  1. Nombre de usuario deseado
  2. Cuéntanos un poco sobre ti
  3. ¿Cómo te enteraste de nosotros?
  4. ¿Formas parte actualmente de alguna otra comunidad en línea similar? (sí/no)
  5. Si es así, ¿cuáles? (condicional: se muestra solo cuando el anterior es Sí)
  6. Divulgaciones de proveedores (grupo de casillas de verificación)
  7. Confirmación de honestidad (casilla de verificación: campo del sistema, no se puede eliminar)

Usa el botón Add field para crear nuevos campos. Usa las flechas arriba/abajo para reordenar. Para hacer un campo condicional, edítalo y usa la sección “Show only when” para seleccionar un campo padre y un valor de activación.

Flujo de Trabajo

  1. El posible miembro visita tu sitio y hace clic en Apply to Join (o navega directamente a /apply)
  2. Rellena el formulario y lo envía; no se requiere cuenta
  3. Los administradores reciben una notificación de mensaje privado
  4. El administrador revisa la solicitud en Admin → Plugins → Member Application → Applications
  5. El administrador aprueba → el solicitante recibe un correo electrónico de invitación con un enlace de un solo uso
  6. El solicitante canjea la invitación, crea su cuenta y el estado de la solicitud se actualiza a Redeemed

Configuración

Nombre Descripción
member_application_enabled Habilita o deshabilita el formulario de solicitud en /apply
member_application_notify_usernames Nombres de usuario separados por comas para notificar por MP en nuevos envíos. Déjalo en blanco para notificar a todos los administradores.
member_application_invite_group Nombre del grupo a añadir a la invitación al aprobar (dejar en blanco para omitir)
member_application_expiry_days Rechaza automáticamente las solicitudes pendientes después de este número de días (0 = nunca)
member_application_expiry_notify Envía correo electrónico de rechazo al caducar automáticamente las solicitudes
member_application_show_apply_button Muestra un botón “Solicitar unirse” en la página de inicio de sesión y en la página de inicio que requiere inicio de sesión
member_application_apply_button_text Etiqueta para el botón Solicitar unirse (predeterminado: “Apply to Join”)
member_application_intro_text Texto introductorio mostrado en la parte superior del formulario de solicitud. Admite markdown. Déjalo en blanco para ocultarlo.
member_application_success_message Mensaje mostrado en la página /apply/success después del envío. Admite markdown.

Notas

  • Agnóstico a la comunidad: todo el texto predeterminado del campo es configurable a través de la pestaña Campos
  • Funciona con el modo login_required / solo invitación de Discourse
  • Licencia MIT
  • Probado en Discourse 2026.3.0

Se aceptan problemas, PRs y solicitudes de características en GitHub.

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

5 Me gusta