Skip to main content

User Roles (Admin)

The User Roles section lets admins manage the third RBAC layer in Lumio — the set of user-scope permissions that controls what authenticated users can do across community features like the Ideas Hub. This is distinct from the account-scope roles (which control dashboard access within a streaming account) and from admin roles (which control access to the admin panel itself).

Where to Find It

Admin sidebar → User Roles. The list lives at /user-roles; individual role detail pages at /user-roles/\{id\}. Per-user role assignments and permission overrides are managed from the user detail page at /users/\{id\}. Per-account permission overrides are managed from the account detail page at /accounts/\{id\}.

Role List

The list at /user-roles shows all user roles.

Columns

ColumnDescription
NameRole display name
SlugMachine-readable identifier
PermissionsCount of permissions assigned to the role
TypeSystem (cannot be deleted) or Custom
DefaultWhether this is the fallback role for unassigned users

System roles (is_system = true) are shown with a lock icon. The default role is indicated with a star badge. There are always exactly three system roles: member (default), restricted, and moderator.

Role Editor

Viewing a Role

Click a row to open the detail page. It shows:

  • Role name, description, and slug.
  • A badge indicating whether the role is system, custom, or default.
  • The full list of permissions assigned, grouped by category.

Creating a Custom Role

Click New Role in the toolbar (requires user-roles:edit). A creation form opens with the following fields:

FieldRequiredNotes
NameYesDisplay name; slug is auto-derived
DescriptionNoShown in the role list and picker
PermissionsYesMulti-select grouped by category (see Permission Categories)

Save to create the role. It becomes immediately available in the user role assignment picker.

Editing a Custom Role

Click the Edit button on a custom role's detail page. All fields — name, description, permissions — are editable.

Editing a system role is blocked. The edit button is hidden and the form fields are read-only for system roles.

Deleting a Custom Role

Click the Delete button on a custom role's detail page. A confirmation dialog is shown. System roles cannot be deleted; the button is absent on their detail pages.

When a role is deleted, users assigned to it automatically fall back to the default role (member) at their next request (the cache entry expires within 5 minutes or is invalidated immediately on deletion).

Permission Categories

Permissions are grouped in the role editor by category:

CategoryPermissions
Ideasideas:create, ideas:vote, ideas:comment, ideas:edit_own, ideas:delete_own, ideas:comment_edit_own, ideas:comment_delete_own
Ideas Moderationideas:moderate_comment, ideas:moderate_edit, ideas:moderate_delete, ideas:moderate_status
Profileprofile:read, profile:edit

Per-User Role Assignments

From the user detail page at /users/\{id\}, the User Role tab shows:

  • The currently assigned role (or "Default (Member)" if unassigned).
  • A Change Role button that opens a dropdown of all user roles (requires user-roles:edit).
  • A Remove Assignment button to revert the user to the default role.

Changing a role takes effect at the next API request for that user (cache is invalidated on save, new TTL is 5 minutes).

Per-User Permission Overrides

From the user detail page, the Permission Overrides tab shows all explicit overrides for that user.

Each override row shows:

  • The permission string (e.g., ideas:create).
  • Whether it is Granted (green check) or Denied (red cross).
  • A Remove button to delete the override.

To add an override, click Add Override and:

  1. Pick a permission from the dropdown (all user-scope permissions are listed).
  2. Choose Grant or Deny.
  3. Save.

Overrides layer on top of the role: granting a permission gives it to the user even if their role does not include it; denying removes it even if the role does include it. Per-user overrides are applied before account-level overrides in the resolution chain.

Requires accounts:manage_permissions.

Per-Account Permission Overrides

From the account detail page at /accounts/\{id\}, the Permission Overrides tab shows the user-scope overrides applied to all users who have that account as their active account when making requests.

The interface is identical to the per-user override UI: each row shows the permission, granted/denied state, and a remove button. Add new overrides via Add Override.

Account overrides are the last layer in the permission resolution chain — they can grant permissions that the user's role and individual overrides do not provide, or deny permissions that they would otherwise have.

Requires accounts:manage_permissions.

Effective Permissions View

From either the per-user role tab or the permission overrides tab on the user detail page, click View Effective Permissions to open a modal that shows the fully-resolved permission set for that user — role permissions merged with user overrides and account overrides — without writing to cache. This is useful for debugging unexpected access behavior.

Permissions

All actions in this section require admin:access (the dashboard-entry gate). In addition:

ActionPermission
View role list, role detail pages, user/account override listsuser-roles:read
Create, edit, delete custom roles; assign/remove user role assignmentsuser-roles:edit
Set or remove per-user permission overridesaccounts:manage_permissions
Set or remove per-account permission overridesaccounts:manage_permissions

System admins implicitly have all permissions.

API

UI ActionGraphQLREST
List user rolesadminUserRolesGET /v1/admin/user-roles
Get role detailadminUserRole(id: UUID!)GET /v1/admin/user-roles/{id}
Create roleadminCreateUserRole(input: ...)POST /v1/admin/user-roles
Update roleadminUpdateUserRole(input: ...)PATCH /v1/admin/user-roles/{id}
Delete roleadminDeleteUserRole(id: UUID!)DELETE /v1/admin/user-roles/{id}
Assign user roleadminAssignUserRole(userId, roleId)PUT /v1/admin/users/{id}/user-role
Remove user roleadminRemoveUserRole(userId)DELETE /v1/admin/users/{id}/user-role
List user overridesadminUserPermissionOverrides(userId)GET /v1/admin/users/{id}/permission-overrides
Set user overrideadminSetUserPermissionOverride(...)PUT /v1/admin/users/{id}/permission-overrides/{permission}
Remove user overrideadminRemoveUserPermissionOverride(...)DELETE /v1/admin/users/{id}/permission-overrides/{permission}
List account overridesadminAccountPermissionOverrides(accountId)GET /v1/admin/accounts/{id}/permission-overrides
Set account overrideadminSetAccountPermissionOverride(...)PUT /v1/admin/accounts/{id}/permission-overrides/{permission}
Remove account overrideadminRemoveAccountPermissionOverride(...)DELETE /v1/admin/accounts/{id}/permission-overrides/{permission}
Resolved permissionsadminUserResolvedPermissions(userId)GET /v1/admin/users/{id}/resolved-permissions