¡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!