# Meilleure façon de mettre à jour ou de créer un utilisateur existant, via l'API, à partir d'un client connecté ?

**URL:** <https://meta.discourse.org/t/best-way-to-update-or-create-existing-user-via-api-from-connected-client/256528>\
**Category:** Development\
**Tags:** rest-api\
**Created:** [Février 28, 2023, 6:33 UTC](https://meta.discourse.org/t/best-way-to-update-or-create-existing-user-via-api-from-connected-client/256528 "2023-02-28T18:33:27Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![aaronbauman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaronbauman/32/204191_2.png) [@aaronbauman](https://meta.discourse.org/u/aaronbauman)\
**Post date:** [Février 28, 2023, 6:33 UTC](https://meta.discourse.org/t/best-way-to-update-or-create-existing-user-via-api-from-connected-client/256528/1 "2023-02-28T18:33:27Z")

</div>

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=$email` pour 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 ?  
Ni `all.json` ni le paramètre de chaîne de requête `email` ne sont documentés, et j’ai trouvé très peu d’exemples, mais [ce post](https://meta.discourse.org/t/use-the-api-to-find-a-username-based-on-an-email/45424/5) semble indiquer que c’est la meilleure façon de procéder.

---

_[View the full topic](https://meta.discourse.org/t/best-way-to-update-or-create-existing-user-via-api-from-connected-client/256528)._
