Obtenir l'adresse e-mail d'un utilisateur via API

Existe-t-il un moyen d’obtenir l’adresse e-mail actuelle d’un utilisateur via l’API ?

Notre cas d’utilisation est le suivant :

Nous permettons aux utilisateurs de gérer leurs informations Discourse via notre site web. En général, Discourse n’est utilisé que comme liste de diffusion et presque tous les utilisateurs ne visitent jamais le site Discourse lui-même. Je souhaite pouvoir afficher à l’utilisateur l’adresse e-mail actuelle utilisée par Discourse afin qu’il puisse vérifier si elle doit être modifiée.

Je peux le faire pour tous les autres champs, sauf pour l’e-mail.

Il existait auparavant un point de terminaison API users/{username}/emails, mais il ne semble plus être disponible.

Bonjour,

GET /users/:username.json

affichera l’adresse e-mail dans deux cas :

  • l’identifiant de l’utilisateur détenteur de la clé API est le même que l’identifiant de l’utilisateur associé au nom d’utilisateur demandé
  • le détenteur de la clé API est un membre du personnel et l’utilisateur demandé est en mode staging

Pour en savoir plus, consultez le code :

À ma connaissance, ce chemin de code n’a pas été modifié récemment.

Oui, mais cela ne m’aide pas. Tous les utilisateurs sont déjà actifs et la clé API de l’utilisateur ne correspondra pas.

Cette requête fonctionne pour moi :

curl "http://example.com/users/joffreyjaffeux/emails.json" \
     -H 'Api-Username: joffreyjaffeux' \
     -H 'Api-Key: xxx' \
     -H 'Content-Type: application/json; charset=utf-8' \

Mais, est-ce que cela fonctionne si l’URL est http://example.com/users/paulapostolos/emails.json ?

Oui, cela devrait fonctionner pour vous-même et pour les autres utilisateurs, tant que la condition suivante est remplie :

  def can_check_emails?(user)
    is_admin? || (is_staff? && SiteSetting.moderators_view_emails)
  end

Notez que cela déclenchera une entrée dans le journal des actions du personnel.

Cela a fonctionné… J’avais un ancien code qui fonctionnait auparavant (version 1.4 environ) et qui utilisait une requête PUT sans le .json à la fin. Je l’ai modifié en GET et changé l’URL, et maintenant cela fonctionne.

Merci pour l’aide !