| 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. | |
| Enlace al Repositorio | GitHub - R23DPrinting/discourse-member-application · GitHub | |
| 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.
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
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).
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.
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.
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.
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).
UX Configurable
- Texto introductorio en la parte superior del formulario (admite markdown)
- Página de éxito en
/apply/successdespué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
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.
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):
- Nombre de usuario deseado
- Cuéntanos un poco sobre ti
- ¿Cómo te enteraste de nosotros?
- ¿Formas parte actualmente de alguna otra comunidad en línea similar? (sí/no)
- Si es así, ¿cuáles? (condicional: se muestra solo cuando el anterior es Sí)
- Divulgaciones de proveedores (grupo de casillas de verificación)
- 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
- El posible miembro visita tu sitio y hace clic en Apply to Join (o navega directamente a
/apply) - Rellena el formulario y lo envía; no se requiere cuenta
- Los administradores reciben una notificación de mensaje privado
- El administrador revisa la solicitud en Admin → Plugins → Member Application → Applications
- El administrador aprueba → el solicitante recibe un correo electrónico de invitación con un enlace de un solo uso
- 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.