--- type: User Story title: Manage linked accounts from the dashboard description: Authenticated users maintain their profile and active Java Edition accounts. tags: [player, dashboard, minecraft, profile] timestamp: 2026-08-01T23:10:59Z story_id: US-005 status: verified --- # User Story As a registered player, I want to manage my profile and linked Minecraft accounts, so that my whitelist identity remains current. # Acceptance Criteria - [x] Given an authenticated user, then only their own profile, accounts, and IP observations are visible and mutable. - [x] The user can update their preferred name. - [x] The user can add Mojang-verified or explicitly confirmed accounts from an allowed network. - [x] The user can soft-remove an active account. - [x] The user can choose exactly one active primary account. - [x] Removing a primary account promotes another active account when one exists. - [x] Name, primary, and account-removal changes automatically synchronize the expected Discord nickname and report the result. - [x] The dashboard shows recent portal and game IP observations with classification and available location. - [x] The dashboard shows the user's Discord display name, username, guild nickname, and immutable Discord ID. - [x] The dashboard shows the single effective access group and whether it grants Minecraft access. - [x] The user can revoke the current session by signing out. # Implementation - [`apps/web/src/app/account/page.tsx`](../apps/web/src/app/account/page.tsx) - [`apps/web/src/app/account/actions.ts`](../apps/web/src/app/account/actions.ts) - [`apps/web/src/app/auth/actions.ts`](../apps/web/src/app/auth/actions.ts) # Validation Server actions verify the current session and constrain every account lookup by the authenticated user ID. Nickname result announcements are covered by [`apps/web/src/components/nickname-notice.test.tsx`](../apps/web/src/components/nickname-notice.test.tsx). # Related Stories - [Synchronize Discord nicknames](us-006-discord-nickname.md) - [Enrich login IPs](us-007-ip-intelligence.md)