Skip to content

Populate global user display name from id_token on login (ARB-515)#380

Merged
crthpl merged 1 commit intomainfrom
arb-515-fix-display-name-on-login
Apr 13, 2026
Merged

Populate global user display name from id_token on login (ARB-515)#380
crthpl merged 1 commit intomainfrom
arb-515-fix-display-name-on-login

Conversation

@crthpl
Copy link
Copy Markdown
Contributor

@crthpl crthpl commented Apr 13, 2026

Summary

  • /api/cohorts was creating new global_user rows with claims.sub as the display name, relying on WebSocket auth to later overwrite it with the real name from the id_token. Users who logged in but hadn't yet been added to any cohort never reached the WS auth path, so their display name stayed stuck on the Kinde sub until someone added them to a cohort.
  • Extract the user's name from the id_token (alongside email) and pass it to ensure_global_user, so the real display name is persisted on first login.
  • When no id_token is provided, use a new find_or_create_global_user helper that creates with a sub placeholder but does not overwrite an existing user's display_name, leaving the WS auth path free to populate it later.

Fixes ARB-515.

Test plan

  • cargo clippy --features dev-mode --all-targets passes
  • cargo test-all passes
  • Manual: log in as a fresh (non-cohort-member) user and confirm the display name in the admin users list shows the real name instead of the Kinde sub

The /api/cohorts REST endpoint was persisting the Kinde `sub` as the
display name when first creating a global user, relying on a later
WebSocket auth to overwrite it with the real name. Users who logged in
but had not yet been added to any cohort never reached the WS auth path,
so their display name stayed stuck on the Kinde sub until someone added
them to a cohort.

Extract the name from the id_token alongside the email, and use it as
the display name in ensure_global_user. When no id_token is provided,
fall back to a new find_or_create_global_user helper that creates with
a sub placeholder but does NOT overwrite an existing user's display_name
(so the WS path can still populate it later).

Fixes ARB-515.
@crthpl crthpl requested a review from a team as a code owner April 13, 2026 20:39
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
platform Ready Ready Preview, Comment Apr 13, 2026 8:40pm

Request Review

@crthpl crthpl merged commit eac92d0 into main Apr 13, 2026
5 checks passed
briansmiley added a commit that referenced this pull request Apr 14, 2026
Reverts commits 7cd390c..c5f4008 (15 commits) to restore the
pre-multi-cohort state. Critical event tomorrow — rolling back to
last known stable state.

Reverted commits:
- 7cd390c Multi-cohort support with per-member initial balance (#358)
- 1a9259e Allow sudoed admins higher decimal precision (#370)
- 612f7e7 Add select all / clear buttons to transfer recipient multiselect (#350)
- ec96705 Link cohort members to existing users when added by email (#378)
- eed7a73 Consolidate admin page data loading into single /api/admin/overview (#381)
- eac92d0 Populate global user display name from id_token on login (ARB-515) (#380)
- c5461ee Remove redundant Refresh button from /admin page (#382)
- 77168e3 Sync Kinde admin role into global_user.is_admin (ARB-512) (#379)
- 685ee0c Remove dead get_market_positions and fix 0.5.0 ImportError (#385)
- e9d49f7 Constrain initial balance inputs to numeric values (#383)
- 95ff300 Stop overwriting global_user display_name on admin REST calls (#386)
- 0163100 Show user email on admin page while editing display name (#387)
- 85f2c5f Fix user selection dropdown hover when multiple users have same name (#388)
- 3fedb38 Add admins to cohort member list on access (ARB-510) (#389)
- c5f4008 Fan out display-name rename to every cohort (ARB-513) (#390)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
briansmiley added a commit that referenced this pull request Apr 14, 2026
Reverts commits 7cd390c..c5f4008 (15 commits) to restore the
pre-multi-cohort state. Critical event tomorrow — rolling back to
last known stable state.

Reverted commits:
- 7cd390c Multi-cohort support with per-member initial balance (#358)
- 1a9259e Allow sudoed admins higher decimal precision (#370)
- 612f7e7 Add select all / clear buttons to transfer recipient multiselect (#350)
- ec96705 Link cohort members to existing users when added by email (#378)
- eed7a73 Consolidate admin page data loading into single /api/admin/overview (#381)
- eac92d0 Populate global user display name from id_token on login (ARB-515) (#380)
- c5461ee Remove redundant Refresh button from /admin page (#382)
- 77168e3 Sync Kinde admin role into global_user.is_admin (ARB-512) (#379)
- 685ee0c Remove dead get_market_positions and fix 0.5.0 ImportError (#385)
- e9d49f7 Constrain initial balance inputs to numeric values (#383)
- 95ff300 Stop overwriting global_user display_name on admin REST calls (#386)
- 0163100 Show user email on admin page while editing display name (#387)
- 85f2c5f Fix user selection dropdown hover when multiple users have same name (#388)
- 3fedb38 Add admins to cohort member list on access (ARB-510) (#389)
- c5f4008 Fan out display-name rename to every cohort (ARB-513) (#390)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant