Hi all,
I’m sharing a proposal to improve the usability of the Rights screen in XWiki. This work is an intermediate step toward the broader full rights revamp currently being driven by the Required Rights proposal.
This is somewhat late and outstanding from my June roadmap as it came from a discussion with @MichaelHamann in May, sorry about that.
Context
The current Rights screen displays all users OR groups (so, not both), and permissions in a single table. While this provides full visibility, it becomes unwieldy and error-prone as the number of entities increases. The interface doesn’t scale well for large instances and is difficult to use on mobile or touch-based devices.
Proposal
I propose replacing the current Rights screen with a simplified and safer interface based on the following principles:
- A dedicated “Add Right” action for assigning permissions.
- A unified LiveData table listing both users and groups with their currently assigned rights.
- Table checkboxes that are read-only, preventing accidental edits from clicks or touches.
- Designed for mobile compatibility using LiveData.
This read-only overview prevents unintentional changes and allows admins to audit existing rights at a glance.
The general layout was also changed a bit by introducing titles for the two sections, the rights themselves and the checkboxes under them.
Managing Rights
Selecting a row or clicking the “Add Right” button opens a Manage Right dialog. This is the only place where changes can be made.
Key points:
- Rights are modified in this dialog, including deletion.
- For editing existing rows, the fields Type (user/group) and Name are locked to avoid breaking references or conflicting entries.
- Empty rights can be selected to unset permissions (pictured below).
Custom Rights
Custom rights will be displayed below the standard XWiki rights in the same interface, maintaining consistency and visibility.
Objective
As stated earlier, this is a stepping stone. My intent with this proposal is to reduce complexity and minimize possible user errors with the current implementation.
As always, I’d appreciate your feedback.
Thanks.