Benutzerprofilseite nach ID?

Gibt es einen Routenpfad, um über eine Benutzer-ID auf ein öffentliches Benutzerprofil zuzugreifen?

Mir ist bekannt: https://meta.discourse.org/u/{username}/summary
Ich möchte: https://meta.discourse.org/u/{user-id}/summary

Zweck: Ich möchte, dass Profile auf meiner Hauptseite auf Profile auf meiner Discourse-Seite verlinken. Das Problem ist, dass ich ursprünglich kein SSO verwendet habe, daher sind die Benutzernamen zwischen meinen beiden Seiten nicht konsistent und werden bei jedem Ab- und Anmelden aktualisiert. Ich habe versucht, die alten Benutzer-IDs zu „leeren", nur um festzustellen, dass es keinen Endpunkt gibt, um Benutzernamen zu aktualisieren (man kann nur E-Mail und Avatar aktualisieren).

Da sich die Benutzernamen ändern, habe ich stattdessen die id gespeichert, aber jetzt ist mir aufgefallen, dass ich keine URL direkt generieren kann, um mit der ID auf ihr Profil zuzugreifen. Ich müsste zusätzliche Webanfragen stellen, was ich vermeiden möchte. Andernfalls müsste ich einmal den Endpunkt by-external aufrufen, um den Benutzernamen zu erhalten, aber eine Umleitung wäre schön.

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.