I have an interface for managing a user's roles in an interface for managing accounts in a web application.
The roles are basically roles in the Role-Based Access Control - (RBAC) context.
Specifications:
- Users can have multiple roles or none at all.
- All users regardless of whether they have any roles or none at all will always have a default "member" role. Membership in this "member" role cannot be removed and always "sticks" to every user account.
Considering this, it seems that a checkbox group would be the most suitable control:
download bmml source – Wireframes created with Balsamiq Mockups
However, I have only got 6 roles + the default member role in there and the field set is already looking a bit long. Get up to 12 to 14 roles and the thing will become quite unusable.
Are there any alternatives or other controls I can use instead of having a very long field set? In the above mockup, the field set would be almost impossible to use if there are 100 roles in the system.
The requirements are that:
- I need to be able to display the role name and description.
- Users can have multiple roles.
- It should not take a lot of effort to add or remove a role for a user.
- The user should be able to see ALL the roles. While the "tags" functionalilty of StackExchange works well, in this case, it can be hard to "guess" the name of a role to start the autocomplete process.
Some clarification regarding groups:
Currently, the process to create a role is quite friction less: The user simply gives the role a name, an optional description and sets the permissions by ticking some checkboxes.
There is no sense of departments, or groups or anything like that. Roles created tend to not be specific to any departments or groups and tend to be quite general: 2 people working in different departments could have the same role.
Under these circumstances, are there other ways to do grouping? Or should we just present the roles as a list sorted alphabetically?