Page de profil utilisateur par id ?

Existe-t-il une route permettant d’accéder à un profil utilisateur public en utilisant son identifiant ?

Je connais : https://meta.discourse.org/u/{username}/summary
Et je souhaite : https://meta.discourse.org/u/{user-id}/summary

Objectif : Je veux que les profils de mon site principal pointent vers les profils de mon site Discourse. Le problème est que, initialement, je n’utilisais pas SSO, donc les noms d’utilisateur ne sont pas tous cohérents entre mes deux sites et sont mis à jour à chaque déconnexion/reconnexion. J’ai tenté de « vider » les anciens identifiants utilisateurs, seulement pour réaliser qu’il n’existe aucun point de terminaison me permettant de mettre à jour les noms d’utilisateur (vous ne pouvez mettre à jour que l’e-mail et l’avatar).

Comme les noms d’utilisateur changent, j’ai stocké l’id à la place, mais je réalise maintenant que je ne peux pas générer directement une URL pour accéder à leur profil via l’identifiant. Je devrais effectuer des requêtes web supplémentaires, ce que j’essaie d’éviter. Sinon, je pense devoir appeler le point de terminaison by-external une fois pour obtenir le nom d’utilisateur, mais une redirection serait idéale.

If you’re trying let users get their own profile, yo can use /my/summary/

https://meta.discourse.org/my/summary

Thanks but no, I want any user viewing a profile on my main site, to be able to click a link on that page to take them to the corresponding profile on the discourse page.

It would be great if there were a PUT endpoint for username. The use case is sites like mine which transitioned to SSO, to get all the usernames synced. Then my plan A would have just worked.

My fallback plan I think is going to be to add another column to store discourse_username also in my DB along with discourse_id. This way, I can directly to their profile with username. The downside is that this username can change. So I need to daily scan all users to re-sync.

You can make a POST request to /admin/users/sync_sso for this. If you are using the Discourse API gem, you can use the gem’s sync_sso method for this. If you are not using the gem, see Sync DiscourseConnect user data with the sync_sso route for details about setting up the request.