Repository navigation
feat(users): manage instance user accounts and roles from Settings > Users - #519
Merged
Merged
Conversation
…ys under the timeout
caro3801
force-pushed
the
feat/instance-user-management
branch
from
October 2, 2026 12:08
e89cd76 to
bc27567
Compare
caro3801
commented
Oct 2, 2026
| * resolves to `{ items, total }`. | ||
| * @param {string|Ref<string>|Function} options.errorMessage - Toasted when a load fails. | ||
| */ | ||
| export function usePaginatedUsers(view, { load, errorMessage }) { |
Contributor
Author
There was a problem hiding this comment.
hint: might be a job for the backend at some point.
…on and the project dropdown, add a PageTableGeneric top-row slot ICIJ/datashare#2404
…tar without a username ICIJ/datashare#2404
caro3801
force-pushed
the
feat/instance-user-management
branch
from
October 2, 2026 12:59
3d2cf54 to
4832dc8
Compare
pirhoo
requested changes
Oct 2, 2026
…d the project Users tab ICIJ/datashare#2389
…list, with the project role only and admin badges ICIJ/datashare#2404
caro3801
force-pushed
the
feat/instance-user-management
branch
from
October 2, 2026 13:45
4832dc8 to
f00c3b5
Compare
pirhoo
approved these changes
Oct 2, 2026
This was referenced Oct 2, 2026
Closed
This was referenced Oct 2, 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.
Summary
Adds Settings > Users, an instance-wide page to manage user accounts and their roles (ICIJ/datashare#2387, sub-issues #2388-#2395, #2404).
The big move: from the project Users tab to Settings > Users
Account management used to live in each project's Users tab. It now lives in one place, Settings > Users:
ProjectViewEditUsersCreateModal)SettingsViewUsersCreateModal(moved and reworked, then opens the user's roles)ProjectViewEditUsersDeleteModal)SettingsViewUsersDeleteModalSettingsViewUsersEditModal)SettingsViewUsersRolesModal)The project Users tab keeps a role column: the user's instance and domain admin roles as badges, then a dropdown with their role on this project only ("Inherited" when their access comes only from one of those badges). Users are added to or removed from the project by picking a role or "No role". Both pages share the same list logic (
usePaginatedUsers).Main features
/settings/users/create,/settings/users/(edit|manage|delete)/<uid>), so it can be linked to or reloaded. An unknown uid shows "User does not exist."@Policychecks: instance admins manage accounts and instance/domain admin grants; domain admins see the list and manage project roles. Nobody can delete their own account or revoke their own instance admin role.How to review
The history is split into 14 commits, one feature each, in dependency order. Each commit builds, carries its own specs and strings, and can be read on its own.
ProjectViewEditDetails.spec.js.gitignore.gitignoresrc/api/index.jsusePolicies.js(isDomainAdmin,isInstanceAdminnow a computed),useAuth.js(isCurrentUser)ProjectButton.vue,ProjectLabel.vue,utils/projects.js,ProjectDropdownSelector*(placeholder),PageTableGeneric.vue(top-rowslot)FormInputPassword.vue,DisplayUserAvatar.vueenums/roles.js(parsing, ordering, icon/color),DisplayRole.vue,ProjectRoleThumbnail.vue,InstanceUsersRoleBadge(s).vueusePaginatedUsers.js,InstanceUsersList.vue,InstanceUsersActions.vue,store/modules/app.js(getSettingsfalls back to view defaults)ProjectViewEditUsers.vue,ProjectUsersList.vue,ProjectUsersRoleDropdown.vue(old create/delete modals removed)SettingsViewUsersCreateModal.vue,usePasswordConfirm.jsSettingsViewUsersEditModal.vue,SettingsViewUsersNotFound.vueSettingsViewUsersDeleteModal.vueSettingsViewUsersRolesModal.vue(the densest part)SettingsViewUsers.vue(routed modals, refreshes, unsupported state),SettingsView.vue,router/index.jsThe four files in bold carry most of the logic. Specs mirror each file under
tests/unit/specs/.Side effects outside the users pages
ProjectDropdownSelectornow shows "Select a project" when nothing is selected, including in the search bar.getSettingsfalls back to a view's defaults, so adding a view no longer needs aSETTINGS_VERSIONbump.known limitations :
User pagination search is not optimized: SettingsViewUsers.vue, fetchRoutedUser: finding a user by uid searches with q=uid and only checks the first 100 results for an exact match.
Settings > users





Project > users

