J’ai une table members dans la base de données de mon application, où je stocke des informations spécifiques à l’application pour un sous-ensemble de membres. L’une des colonnes est discourse_user_id. Je souhaite afficher un lien vers le profil Discourse du membre. Est-il possible de le faire uniquement avec leur identifiant utilisateur ?
Je ne stocke pas discourse_user_name car l’utilisateur peut le modifier, et je devrais alors m’inquiéter de maintenir la synchronisation.
La seule solution qui me vient à l’esprit est de faire une requête API vers /admin/users/<user-id>.json pour obtenir leur nom d’utilisateur, mais cela impliquerait un grand nombre de requêtes sur une page d’index où je liste les membres avec des liens vers leurs profils.
L’autre idée qui me vient est de créer un plugin pour ajouter une route, mais cela semble être beaucoup d’effort pour quelque chose dont je m’attends à ce que d’autres personnes aient déjà parlé. Je voulais donc vérifier s’il existe déjà une autre solution.
Une idée consiste à ajouter un identifiant externe dans l’enregistrement de l’utilisateur, puis vous pourriez utiliser /by-external/:external_id. Une autre option est d’utiliser un webhook pour notifier votre base de données externe en cas de changement de nom d’utilisateur. Une troisième possibilité est tout simplement de désactiver la modification des noms d’utilisateur. Après un rapide examen de discourse/config/routes.db, je ne vois aucune route qui utilise user_id.
En fouillant dans la documentation de l’API et avec un client REST, je ne vois cependant pas comment mettre à jour ce champ. Puis-je l’utiliser sans activer SSO ? (Et, même si j’activais SSO, pourrais-je le mettre à jour de manière programmatique ?)