Repository navigation
feat(wallets): bind a legacy wallet to a keycloak account - #1253
Merged
dadiorchen merged 1 commit intoOct 10, 2026
Merged
Conversation
Wallets made before keycloak carry no account id, and the panel had no way to set one. Adds a wallet detail page behind the wallet-admin gate, reached from the list, with a dialog that finds the account by email or user name so nobody has to paste a uuid.
dadiorchen
approved these changes
Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1241
Problem
Wallets created before Keycloak carry no
keycloak_account_id, and the panel had no way to set one. The issue also asked us to define how an admin finds that id before coding; we agreed on search rather than pasting a uuid, since a pasted id is unverifiable and the acceptance criteria already ask the page to show the account's name or email.Change
A wallet detail page at
/wallets/:walletId, reached by clicking a wallet name in the list. It shows the name, the keycloak id (empty when unbound) and, once bound, the account behind it. A "Bind keycloak account" button opens a dialog that searches by email or username, lists the matches, and binds the one the admin picks.The route sits behind the same
wallet-admingate as the Wallets page, so/wallets/:idrenders Unauthorized for anyone else.Verification
4 unit tests in
src/views/WalletDetailView.test.jscover the unbound state, the bound state with account info, the full search-and-bind flow, and a load failure. 202 unit tests pass, eslint and prettier clean, production build succeeds.The BDD scenario was run against a local wallet-api on the Greenstand/treetracker-wallet-api#612 branch, so the detail page and the empty keycloak id are verified against the real endpoints:
Video in
reports/video/wallet-admin/run.mp4.Blocker
The scenario's last two steps stay red until the APIs they call are merged and deployed to dev: