| Resumen | Discourse Member Application te permite gestionar un proceso de solicitud estructurado para miembros potenciales antes de que se unan a tu comunidad de Discourse. | |
| Enlace al repositorio | R23DPrinting-group / discourse-member-application · GitLab | |
| Guía de instalación | Cómo instalar plugins en Discourse |
discourse-member-application — Un sistema de solicitud previo a la invitación para comunidades privadas
discourse-member-application te permite gestionar un proceso de solicitud estructurado para miembros potenciales antes de que se unan a tu comunidad de Discourse. Los solicitantes completan un formulario público personalizable en /apply, los administradores revisan las solicitudes y las aprueban o rechazan, y los solicitantes aprobados reciben automáticamente un enlace de invitación privado.
GitLab: R23DPrinting-group / discourse-member-application · GitLab
La historia
Administro una comunidad privada que utiliza el modo solo con 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 era escalable 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é ninguno que se ajustara a mis necesidades. Así que construí este.
Demostración
Características
Formulario de solicitud personalizable
El formulario se crea completamente a través de la pestaña Campos en el panel de administración; no se requiere código. Tipos de campos compatibles: texto, área de texto, sí/no, botón de opción, 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 dedicada del plugin. Filtra por estado (Pendiente / Aprobado / Rechazado / Canjeado), busca por correo electrónico o nombre de usuario y pagina listas grandes. Consulta los detalles completos de la solicitud, agrega notas privadas de administrador y aprueba o rechaza individualmente o en masa.
Flujo de aprobación
Aprobar una solicitud genera una invitación de un solo uso de Discourse y 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”. Los miembros aprobados pueden agregarse opcionalmente a un grupo de Discourse automáticamente.
Análisis
La pestaña Análisis muestra estadísticas resumidas (total de solicitudes, tasa de aprobación, tiempo promedio de revisión), un gráfico de tendencias de 12 semanas de envíos frente a aprobaciones y un embudo de conversión de enviado → aprobado → canjeado.
Notificaciones de 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).
Experiencia de usuario configurable
- Texto de introducción 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 (activar/desactivar)
- Caducidad de la solicitud: rechazar automáticamente las solicitudes pendientes después de un número configurable de días
Plantillas de correo electrónico editables
Tanto el correo electrónico de confirmación de envío como el de rechazo son editables a través de Administración → Personalizar → Plantillas de correo electrónico; no se requieren cambios de código.
Seguridad
Limitación de velocidad (5 envíos por IP por hora), detección de duplicados (bloquea el reenvío 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
Agrega lo siguiente a tu /var/discourse/containers/app.yml:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://gitlab.com/r23dprinting-group/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 Administración → Plugins → Solicitud de miembro → Campos para crear tu formulario de solicitud.
El plugin incluye estos campos predeterminados (todos editables o eliminables):
- Nombre de usuario deseado
- Cuéntanos un poco sobre ti
- ¿Cómo te enteraste de nosotros?
- ¿Actualmente eres parte de alguna otra comunidad en línea similar? (sí/no)
- Si es así, ¿cuáles? (condicional: se muestra solo si lo 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 Agregar campo para crear nuevos campos. Usa las flechas arriba/abajo para reordenar. Para hacer que un campo sea condicional, edítalo y usa la sección “Mostrar solo cuando” para seleccionar un campo padre y un valor de activación.
Flujo de trabajo
- Un miembro potencial visita tu sitio y hace clic en Solicitar unirse (o navega directamente a
/apply) - Completa el formulario y lo envía; no se requiere cuenta
- Los administradores reciben una notificación por mensaje privado
- El administrador revisa la solicitud en Administración → Plugins → Solicitud de miembro → Solicitudes
- 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 Canjeado
Configuración
| Nombre | Descripción |
|---|---|
member_application_enabled |
Habilitar o deshabilitar el formulario de solicitud en /apply |
member_application_notify_usernames |
Nombres de usuario separados por comas para notificar por mensaje privado en nuevos envíos. Déjalo en blanco para notificar a todos los administradores. |
member_application_invite_group |
Nombre del grupo al que agregar en la invitación al aprobar (déjalo en blanco para omitir) |
member_application_expiry_days |
Rechazar automáticamente las solicitudes pendientes después de este número de días (0 = nunca) |
member_application_expiry_notify |
Enviar correo electrónico de rechazo al caducar automáticamente las solicitudes |
member_application_show_apply_button |
Mostrar 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: “Solicitar unirse”) |
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 de la comunidad: todo el texto predeterminado de los campos es configurable a través de la pestaña Campos
- Funciona con el modo
login_required/ solo con invitación de Discourse - Licencia MIT
- Probado en Discourse 2026.3.0
Se aceptan problemas, PRs y solicitudes de características en GitLab.