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=$emailper 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?
Néall.jsonné il parametro della stringa di queryemailsono documentati, e ho trovato pochissimi esempi, ma questo post sembra indicare che sia il modo migliore per procedere.