¿La mejor manera de actualizar o crear un usuario existente, a través de la API, desde un cliente conectado?

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=$email para 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 de all.json ni el parámetro de cadena de consulta email están documentados, y encontré muy pocos ejemplos, pero esta publicación parece indicar que es la mejor manera de proceder.
1 me gusta

No soy un experto como algunos, pero creo que sí.

Me parece correcta. La mejor documentación, y siempre actualizada, es Ingeniería inversa de la API de Discourse.

1 me gusta