Add user feature permissions and unified account management
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# User feature access
|
||||
|
||||
In **Configuration → User management → Manage users**, the Feature access checkboxes apply to all existing non-admin accounts. A mixed checkbox means some accounts have access. Only changed checkboxes are saved; search filters do not restrict the bulk operation. New accounts retain the default access described below.
|
||||
|
||||
Open a user and choose **Manage this user** to change individual permissions, contact email, role, automatic search/download, profile defaults or expiry. Request statistics remain on the main profile page. Administrators always have all features.
|
||||
|
||||
| Feature | Access controlled |
|
||||
| --- | --- |
|
||||
| My Stats | Viewing statistics, report exports, report email preferences and delivery |
|
||||
| My Requests | Existing requests, progress, request actions and live request streams |
|
||||
| New Requests | Media request options and submission |
|
||||
| Issues | Issue lists, reporting, comments, resolution responses and issue repair actions |
|
||||
| Invites | Creating, viewing and managing personal invitations; existing limits still apply |
|
||||
|
||||
Media search is shared by New Requests and the issue picker. Either permission allows search; only New Requests permits submission. The existing automatic search/download permission still applies in addition to feature access.
|
||||
|
||||
Navigation and direct-page access use the authenticated account's permissions. APIs enforce them independently on each request. Open request streams recheck access, and report emails recheck Stats access before sending. Removing a permission does not erase existing records or unsend emails. The switches apply inside Magent and do not change Jellyfin or Seerr permissions.
|
||||
|
||||
Existing users retain Stats, My Requests, New Requests and Issues access when upgrading. Invite access uses the existing `users.invite_management_enabled` column. Other overrides are stored by Magent user ID in `user_feature_permissions`; deletion of the account removes its overrides. The old site-wide navigation visibility setting is no longer used by the menus.
|
||||
|
||||
The red account section distinguishes:
|
||||
|
||||
- **Block Magent access:** prevent Magent sign-in and keep the account.
|
||||
- **Disable Magent and Jellyfin access:** block Magent, attempt to disable the same-name Jellyfin account, disable issued invitations and attempt a notification email. Seerr relies on Jellyfin sign-in; its account is not directly banned. Restoring access does not reactivate invitations.
|
||||
- **Delete Magent, Jellyfin and Seerr accounts:** remove Magent and local activity, attempt deletion of the same-name Jellyfin account and linked Seerr account, disable invitations and attempt notification. Media files and Jellystat history are retained. External actions can partially fail.
|
||||
|
||||
Validation: backend permission tests use temporary databases and real signed tokens. `scripts/review_feature_access_ui.cjs` checks desktop/mobile profiles, dialogs, bulk scope and denied routes with intercepted API fixtures. Set `PLAYWRIGHT_PACKAGE` when Playwright is installed outside the project, and optionally `REVIEW_BASE` to target a deployed frontend.
|
||||
Reference in New Issue
Block a user