Aquí está el caso de uso, que estoy seguro que muchas personas han enfrentado:
- Tener un montón de usuarios en Discourse
- Tener un sistema externo (proveedor de servicios, Drupal) que utiliza la API para crear usuarios de Discourse y administrar membresías de grupos
- Drupal tiene un conjunto de usuarios parcialmente superpuesto. Es decir, los usuarios con la misma dirección de correo electrónico existen en Discourse y Drupal, pero no están vinculados.
- Drupal utiliza la API para sincronizar usuarios, grupos y membresías porque los usuarios podrían no usar nunca el SSO para acceder a Discourse, sino depender de los correos electrónicos.
Comportamiento actual:
- Discourse a veces rechaza la llamada a la API para crear un usuario de Discourse, porque ya existe un usuario de Discourse con el mismo correo electrónico.
Comportamiento deseado:
- Discourse vincula al usuario de Discourse existente con el usuario de Drupal, a través del correo electrónico.
Solución propuesta:
- Consultar el punto final de la API de Discourse
/admin/users/list/all.json?email=$emailpara obtener los usuarios con una dirección de correo electrónico coincidente. - Si el usuario coincidente existe
- Conectar los usuarios existentes (lado de Drupal)
- de lo contrario
- Crear un nuevo usuario de Discourse.
Preguntas
- ¿Parece una solución razonable, o hay una mejor manera de hacerlo?
- ¿Está formada correctamente la consulta a la API?
Ninguno deall.jsonni el parámetro de cadena de consultaemailestán documentados, y encontré muy pocos ejemplos, pero esta publicación parece indicar que es la mejor manera de proceder.