users: turn the four modals into a per-user page at #users/{id}
Nightly Build / build (push) Successful in 6m58s

The connectors-assignment dialog was the fourth modal on the Users page
and the first to break: a checkbox list taller than the viewport with no
scroll. Same failure the connector activation and manual-add dialogs had,
same fix — a page. The list stays a table, but rows are clickable and
open the user's own page with three sections:

- Profile: the old edit form (username, display name, role, directory
  fields, active switch) with a saved tick;
- Connectors: the grant checklist as the Connectors page's row list
  (icon, name, description, search, global/personal groups), one Save;
- Security: password reset (disabled with an explanation for encrypted
  users) and the delete action.

Only user creation stays a modal — three fields and a role fit.
This commit is contained in:
2026-07-27 21:40:17 +01:00
parent 776748435b
commit fadb31832f
6 changed files with 618 additions and 345 deletions
+8 -6
View File
@@ -1054,12 +1054,16 @@ export default {
'users.badge.active': 'Active',
'users.badge.inactive': 'Inactive',
'users.action.reset_pw': 'Reset password',
'users.action.edit': 'Edit',
'users.action.connectors': 'Connectors',
'users.action.delete': 'Delete',
'users.modal.connectors_title': 'Connectors — {username}',
'users.detail.back': 'Users',
'users.detail.profile': 'Profile',
'users.detail.connectors': 'Connectors',
'users.detail.security': 'Security',
'users.detail.saved': 'Saved',
'users.detail.delete_hint': 'Deletes this user, their database and all conversation history.',
'users.detail.no_such': 'User not found.',
'users.conn.globals': 'Shared connectors',
'users.conn.catalog': 'Personal connectors',
'users.conn.hint_global': 'Available to this user as soon as you enable it.',
@@ -1068,8 +1072,6 @@ export default {
'users.conn.disabled': 'disabled',
'users.modal.create_title': 'New user',
'users.modal.edit_title': 'Edit {username}',
'users.modal.reset_title': 'Reset password — {username}',
'users.modal.username': 'Username',
'users.modal.display_name': 'Display name',
'users.modal.optional': '(optional)',