Quiero que solo las personas registradas en mi sitio web externo puedan crear una cuenta en mi foro de Discourse. No creo que pueda usar la API de SSO porque mi sitio web no tiene autenticación; solo hay registro en una base de datos SQL.
¿Puedo establecer una condición en el registro para que solo las personas registradas en mi base de datos SQL (mi sitio web) puedan registrarse?
No soy un experto en Discourse, pero hay muchas formas de manejar esto y aquí hay una que espero podría funcionar y que intentaría explorar:
- Requerir aprobación para nuevos usuarios de Discourse.
- Desarrollar un script en tu sitio web remoto o en un entorno sin servidor que consulte tu base de datos para una persona y luego llame a la API de Discourse para aprobar o rechazar al nuevo usuario.
- Configurar Discourse para que realice una llamada webhook al script cuando haya un nuevo usuario.
- Personalizar la redacción de Discourse para describir mejor a tus usuarios lo que está sucediendo.
Básicamente, Discourse tiene buenos webhooks y una API sólida, por lo que puedes usarlos mientras escribes tu script personalizado de forma remota en el lenguaje con el que te sientas más cómodo.
Si estás dispuesto a escribir un complemento de Discourse en Ruby, eso también funcionaría, pero personalmente no lo haría, así que encontraría esta opción más sencilla.
Una forma de lograr esto sería activar las configuraciones del sitio solo por invitación y debe aprobar usuarios. Con esas configuraciones activadas, las únicas personas que podrán crear cuentas en tu sitio serán los usuarios que reciban una invitación. Las invitaciones solo podrán ser enviadas por usuarios del personal, ya que la configuración del sitio debe aprobar usuarios impide que los usuarios que no son del personal envíen invitaciones.
Luego, podrías extraer las direcciones de correo electrónico de tu base de datos SQL y agregarlas a un archivo CSV. Ese archivo podría usarse para invitar usuarios en masa siguiendo los pasos descritos aquí: Enviar invitaciones de usuario en masa.
Gracias, Jonathan, por tu idea.
No pude encontrar la API para aprobar o rechazar el registro.
Gracias, Simon.
El problema es que la base de datos es amplia y actualizable.
Al buscar en la base de código de Discourse en GitHub, encontré una acción “approve_user”, por ejemplo put "/review/#{reviewable.id}/perform/approve_user.json". Parece que podrías necesitar obtener los reviewables primero para obtener el ID de reviewable que necesitas.