Voici le cas d’utilisation, auquel je suis sûr que beaucoup de gens ont été confrontés :
- Avoir un tas d’utilisateurs dans Discourse
- Avoir un système externe (fournisseur de services, Drupal) qui utilise l’API pour créer des utilisateurs Discourse et gérer les appartenances aux groupes
- Drupal a un ensemble d’utilisateurs partiellement chevauchant. C’est-à-dire que des utilisateurs ayant la même adresse e-mail existent dans Discourse et Drupal, mais ne sont pas liés
- Drupal utilise l’API pour synchroniser les utilisateurs, les groupes et les appartenances car les utilisateurs n’utiliseront peut-être jamais l’authentification unique (SSO) pour accéder à Discourse, s’appuyant plutôt sur les e-mails
Comportement actuel :
- Discourse rejette parfois l’appel API pour créer un utilisateur Discourse, car un utilisateur Discourse existe déjà avec le même e-mail
Comportement souhaité :
- Discourse lie l’utilisateur Discourse existant à l’utilisateur Drupal, via l’e-mail
Solution proposée :
- Interroger le point de terminaison de l’API Discourse
/admin/users/list/all.json?email=$emailpour récupérer tous les utilisateurs ayant une adresse e-mail correspondante - Si l’utilisateur correspondant existe
- Connecter les utilisateurs existants (côté Drupal)
- sinon
- Créer un nouvel utilisateur Discourse
Questions
- Cela semble-t-il être une solution raisonnable, ou existe-t-il une meilleure façon de procéder ?
- La requête API est-elle correctement formée ?
Niall.jsonni le paramètre de chaîne de requêteemailne sont documentés, et j’ai trouvé très peu d’exemples, mais ce post semble indiquer que c’est la meilleure façon de procéder.