Permitir condicionalmente el registro de nuevos usuarios

¡Hola!

Soy nuevo en la administración/desarrollo de Discourse y aún no hablo Ruby (aunque estoy totalmente dispuesto a aprender). Mi primera tarea fue configurar una instalación de Discourse, lo cual logré en Digital Ocean usando la imagen oficial de Docker. Hasta ahora, todo va bien: ¡un saludo a quienes lo hicieron tan sencillo!

Mi siguiente tarea es más desafiante (para mí). Me he ofrecido como voluntario para configurar este Discourse para una organización sin fines de lucro que desea restringir el registro y la participación de usuarios exclusivamente a miembros de dicha organización. Por lo tanto, necesito modificar, integrar (o incluso reemplazar) de alguna manera el proceso de creación de nuevos usuarios para verificar programáticamente si la dirección de correo electrónico enviada coincide con la de un miembro actual de una organización existente y si la fecha de vencimiento del miembro está en el futuro.

La organización utiliza NeonCRM, el cual proporciona una API que facilita bastante esta verificación. Por lo que entiendo, Discourse también ofrece una API que permite realizar cualquier acción que se pueda hacer manualmente. Por lo tanto, es más que teóricamente posible lograr lo que quiero, ¿verdad? La pregunta es cuál es el mejor enfoque.

Por ejemplo, si Discourse permite escribir un oyente de eventos (o un plugin) que observe el registro de nuevos usuarios, ejecute esta lógica de verificación y pueda abortar el registro con un mensaje informativo que pueda mostrar de alguna manera (“Lo sentimos, debes ser miembro de la Asociación XYZ”), eso sería brillante.

Alternativamente, puedo imaginar escribir mi propia página de registro de usuarios (en PHP, un lenguaje que domino) que utilice ambas APIs. Sin embargo, en ese caso necesitaría modificar de alguna manera mi instalación de Discourse para que la página de registro redirija al usuario a mi versión personalizada.

Me encantaría recibir algunas sugerencias sobre cómo debería ser la estrategia general y por dónde empezar a aprender a hacerlo.

¡Muchas gracias!

2 Me gusta

Puedes limitar los registros por dominio de correo electrónico. Si todos tus usuarios utilizan el mismo, nadie de fuera de esa organización podrá unirse. En la configuración, busca dominios de correo electrónico permitidos.

Una lista de dominios de correo electrónico separada por barras verticales con la que los usuarios DEBEN registrar sus cuentas. ADVERTENCIA: No se permitirá a los usuarios con dominios de correo electrónico distintos a los listados registrarse.

2 Me gusta

Ah, eso podría funcionar si el conjunto de dominios posibles estuviera limitado a un tamaño razonable, pero en este caso las direcciones de correo son arbitrarias. Gracias por la sugerencia.

2 Me gusta

¿Esto ayuda?

@Jonathan5, gracias por la sugerencia. Revisé ese hilo y, francamente, parece una pesadilla. Además, los miembros de esta asociación no utilizan NeonCRM directamente para iniciar sesión en nada; solo los administradores de la asociación lo hacen. Es complicado.

Tuve otra idea. Tengo Discourse configurado como exclusivo por invitación. Supongamos que lo mantuviera así, pero modificara el texto de la página de inicio de sesión para decir algo como: «Por favor, ve a my.example.org/discourse-invitation para solicitar una invitación». Y en esa URL tendría mi script que utiliza la API de NeonCRM para verificar la membresía del usuario potencial, usa la API de Discourse para crear el usuario (si la verificación es exitosa) y les envía la invitación. Creo que mi razonamiento es sólido. ¿Tengo razón?