Miglior modo per aggiornare o creare utente esistente, via API, da client connesso?

Ecco il caso d’uso, che sono sicuro molte persone hanno affrontato:

  • Avere un gruppo di utenti in Discourse
  • Avere un sistema esterno (fornitore di servizi, Drupal) che utilizza l’API per creare utenti Discourse e gestire le appartenenze ai gruppi
  • Drupal ha un set di utenti parzialmente sovrapposto. Ad esempio, gli utenti con lo stesso indirizzo email esistono in Discourse e Drupal, ma non sono collegati
  • Drupal utilizza l’API per sincronizzare utenti, gruppi e appartenenze perché gli utenti potrebbero non utilizzare mai l’SSO per accedere a Discourse, affidandosi invece alle email

Comportamento attuale:

  • Discourse a volte rifiuta la chiamata API per creare un utente Discourse, perché esiste già un utente Discourse con la stessa email

Comportamento desiderato:

  • Discourse collega l’utente Discourse esistente all’utente Drupal, tramite email

Soluzione proposta:

  • Interrogare l’endpoint API di Discourse /admin/users/list/all.json?email=$email per recuperare eventuali utenti con un indirizzo email corrispondente
  • Se l’utente corrispondente esiste
    • Collega gli utenti esistenti (lato Drupal)
  • altrimenti
    • Crea un nuovo utente Discourse

Domande

  • Sembra una soluzione ragionevole, o c’è un modo migliore per farlo?
  • La query API è formulata correttamente?
    all.json né il parametro della stringa di query email sono documentati, e ho trovato pochissimi esempi, ma questo post sembra indicare che sia il modo migliore per procedere.
1 Mi Piace

Non sono un esperto come alcuni, ma penso di sì.

Mi sembra giusto. La migliore documentazione, sempre aggiornata, è Reverse engineer the Discourse API.

1 Mi Piace