feat(users): Profile tab, dialog shell & list CRUD wiring (#36717) - #36990
Open
AP2300 wants to merge 1 commit into
Open
feat(users): Profile tab, dialog shell & list CRUD wiring (#36717)#36990AP2300 wants to merge 1 commit into
AP2300 wants to merge 1 commit into
Conversation
Ships the Users portlet Create/Edit dialog shell with the Profile tab fully wired and placeholders for the three sibling tabs (delivered by #36718, #36719, #36720). Dialog / Profile tab: - 4-tab strip with Profile as the only functional tab; Roles, Permissions, and API Tokens render "Coming soon" placeholders - Header with avatar + name + Active status chip - Account section: first/last name, email, password + confirm, Active - Additional Info section: prefix/suffix/title/company/website - Access section: disabled (values informational only), shows admin / backend / frontend / hasConsoleAccess pulled from the loaded user - Delete User section (edit mode) with required replacement-user picker and email-typed confirmation List CRUD: - DotUsersService gains getUser/createUser/updateUser using POST/PUT/GET /api/v1/users; roles field intentionally omitted on update so backend preserves role membership (see UserResource#processRoles) - DotUsersListStore gains createUser / updateUser / deleteSingleUser - Bulk delete on the list toolbar now shows the same replacement picker instead of the old p-confirmDialog - /users route now resolves to the new users-beta portlet id Shared: - DotUsersReplacementPickerComponent — server-backed autocomplete used by both delete flows; excludes the users being deleted from suggestions client-side Test coverage: 56 tests in the portlet + 46 in data-access all pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 tasks
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 #36717
Summary
GET /api/v1/users/{userId}hydrates the edit dialog,POST /api/v1/userscreates,PUT /api/v1/usersupdates (roles field intentionally omitted so backend preserves membership — seeUserResource#processRoles)/api/v1/users/filter, excludes the users being deleted). Previously deletes silently reassigned ownership to the logged-in admin./usersrouting so the beta portlet actually lands on this UI instead of bouncing to Getting Started (PORTLET_ID_RESOLVERS.users→users-beta).Notable non-obvious calls
CMS Admin,Back-end,Front-end,Can Loginmap to backend roles (not UserForm fields), and safely editing them requires knowing the user's full role list. That's a follow-up (DWR wrapper vs. small REST endpoint decision).UserFormhandles password already; no client-side hack needed.Show Getting Startedtoggle has no backend field; kept in the UI as informational, not persisted. To be revisited if the value is needed elsewhere.Test plan
additionalInfo(prefix/suffix/title/company/website); on Save, changes persist and the list reloadspnpm nx test portlets-dot-users-portlet— 56 passingpnpm nx test data-access --testPathPatterns=dot-router— 46 passingpnpm nx lint portlets-dot-users-portlet— cleanFollow-ups (each on its own branch/PR already prepared)
🤖 Generated with Claude Code