Skip to main content

Users

The Users view lists every registered Lumio user across all accounts. Admins can edit user details (display name, email), manage login connections (disconnect, set reconnect flags, configure primary connections), manage account memberships (add to / remove from accounts), override account creation and max-account limits, and delete users entirely.

Where to find it

Admin sidebar → Users. The list lives at /users; detail pages live at /users/\{id\}.

Quick start

  1. Open Admin → Users.
  2. Search by display name or email using the top search bar.
  3. Click any row to open the user detail page.
  4. Inspect login connections and account memberships in the stacked cards.
  5. If a login provider needs to be detached, use the delete button on that connection row.

Detailed walkthrough

Users list (/users)

  • Search — debounced 300 ms search on display name and email.
  • Columns — Avatar + display name, Email, Created date, Last Login date.
  • Pagination — 25 users per page; "Page X of Y (N users)" footer.
  • Row click — navigates to /users/\{id\}.

User detail (/users/[id])

The detail page stacks these cards:

  1. User Information — Display name and email (both editable inline, requires users:edit), User ID, Created At, Last Login. A Delete User button (requires users:delete) opens a confirmation dialog before permanently deleting the user and all their data.
  2. Login Connections — table of every identity provider the user has linked: Provider (the google provider renders as "YouTube"), Username on that provider (falling back to the provider account ID), Primary For (which accounts use this connection as their primary, shown as amber star badges), Connected Since, Actions. Each row carries a reconnect-flag toggle and a Disconnect button. Admins can set or clear the primary connection for any account from this card.
  3. Account Memberships — table of every account the user belongs to: Account (linked to /accounts/\{account_id\}), Plan badge, Role, Owner flag, Actions. An Add to Account button (requires accounts:edit) adds the user to an account by account ID. Each non-owner membership row has a Remove button with a confirmation dialog.
  4. Account Creation — 3-state override dropdown that controls whether this user may create new accounts (see Account Creation Override below). Rendered only for admins with users:edit.
  5. Account Limit Override — optional integer override for how many accounts the user can own (see Max Accounts Override below). Rendered only for admins with users:edit.
  6. Extension Dev Mode — enable/disable extension development mode for this user. Rendered only for admins with developer-limits:edit.
  7. Roles — the user's user-role and admin-role assignments in one list, each entry badged User or Admin. A user can hold several of each. Assign via the grouped dropdown at the bottom of the card; remove with the trash button on an entry. User-role rows are gated on user-roles:edit, admin-role rows on admin-roles:edit.
  8. Permission Overrides — per-user overrides of user-scope permissions. Columns: Permission, Status (Granted / Denied), Reason, Set (timestamp), remove button. Add via the Add Override form. Gated on user-roles:edit.
  9. Effective Permissions — the fully resolved permission set for the user, grouped by category. Permissions that come from an override are highlighted in amber with an Overridden badge.

Max Accounts Override

The Max Accounts Override section lets admins grant a specific user the ability to own more (or fewer) Lumio accounts than their plan normally allows.

The field is stored as max_accounts_override on the user record and accepts an optional positive integer. When set, it replaces the plan-derived account limit for that user. When null, the plan default (the plan's max_accounts column) is used.

Field values:

ValueMeaning
nullUse the plan default (no override).
1 or moreUser may own up to this many accounts regardless of plan.

Updating this field goes through GraphQL: adminUpdateUserMaxAccountsOverride(userId: UUID!, maxAccounts: Int). PATCH /v1/admin/users/\{id\} does not accept a max_accounts_override field — its body is limited to account_creation_override, display_name, and email. The admin UI reaches the mutation through its own proxy route at /api/users/\{id\}/max-accounts-override. Requires the users:edit admin permission.

The override is exposed in:

  • GET /v1/admin/users/\{id\} response body (max_accounts_override field)
  • adminUser(id) GraphQL query (maxAccountsOverride field on AdminUser)

Account Creation Override

The Account Creation section lets admins grant or deny a specific user the ability to create streaming accounts, regardless of the global system:account_creation flag setting.

Dropdown options:

OptionREST valueGraphQL enumMeaning
Default (inherit global)"default"DEFAULTDefer to the global system:account_creation flag. If the flag is ON, the user can create accounts; if OFF, they cannot.
Allow"allow"ALLOWUser may always create an account, even if the global flag is OFF.
Deny"deny"DENYUser is always blocked from creating an account, even if the global flag is ON.

The value is persisted as a nullable boolean on the user row (null / true / false); both wire formats map onto it.

Effective state — a line below the dropdown shows the resolved outcome by combining the dropdown value with the global flag state: Allowed, Blocked, or Allowed (global block bypassed) when the global flag is off but this user is explicitly allowed.

Saving the override calls PATCH /v1/admin/users/\{id\} with { "account_creation_override": "default" \| "allow" \| "deny" } (REST) or the adminUpdateUserAccountCreationOverride(userId, override) mutation (GraphQL). The admin UI reaches it through /api/users/\{id\}/account-creation-override.

Common scenarios

  • Abuse investigation — open a user, check their account memberships to see what data they control, then follow up in each account.
  • Compromised OAuth — delete the affected login connection. The user must re-link that provider before using it again.
  • Duplicate account merge — the admin UI does not merge users. Use the CLI/DB for merges; use this page to verify account memberships first.
  • "Why can't user X log in?" — inspect Login Connections to confirm they still have at least one working provider link.

Permissions

ActionPermission
View user list / detailusers:read
Edit display name / emailusers:edit
Delete a user's login connectionusers:edit
Set reconnect flag on login connectionsusers:edit
Update account creation / max accounts overrideusers:edit
Delete a userusers:delete
Set primary login connection for an accountaccounts:edit
Add / remove account membershipsaccounts:edit
Assign / remove user roles, manage per-user permission overridesuser-roles:edit
Assign / remove admin rolesadmin-roles:edit
Toggle Extension Dev Modedeveloper-limits:edit

All actions additionally require admin:access. System admins (system_admin.is_system = true) implicitly have every permission.

API

UI actionGraphQLREST
List users (paginated, searchable)adminUsersGET /v1/admin/users
Get user detailadminUserGET /v1/admin/users/\{id\}
Update display name / emailadminUpdateUserPATCH /v1/admin/users/\{id\}
Delete useradminDeleteUserDELETE /v1/admin/users/\{id\}
Delete a login connectionadminDeleteUserLoginConnectionDELETE /v1/admin/users/\{id\}/login-connections/\{provider\}
Set login reconnect flagadminSetLoginReconnectFlagPUT /v1/admin/login-connections/\{id\}/reconnect-flag
Set primary for accountadminSetPrimaryLoginConnection--
Update account creation overrideadminUpdateUserAccountCreationOverridePATCH /v1/admin/users/\{id\} (body field account_creation_override)
Update max accounts overrideadminUpdateUserMaxAccountsOverride--
List / assign / remove user rolesuserRoleAssignments / assignUserRole / removeUserRoleGET / POST /v1/users/\{user_id\}/roles, DELETE /v1/users/\{user_id\}/roles/\{role_id\}
List admin roles for a useradminUserAdminRoles--
Assign / remove admin roleadminAssignUserRole / adminUnassignUserRolePUT / DELETE /v1/admin/admin-roles/\{id\}/members/\{userId\}
Per-user permission overridesuserPermissionOverrides / setUserPermissionOverride / removeUserPermissionOverrideGET / PUT /v1/users/\{user_id\}/permission-overrides, DELETE /v1/users/\{user_id\}/permission-overrides/\{permission\}
Effective permissionsresolvedUserPermissionsGET /v1/users/\{user_id\}/permissions/resolved
Toggle Extension Dev ModesetExtensionDevMode--

Tips & gotchas

  • There is no ban / unban surface in the admin app today. Blocking a user from logging in is done by removing all of their login connections or deleting the user entirely.
  • There is no sessions management in the admin user view. Session admin is handled per-account by the account owner (see the user-facing docs for the sessions page).
  • Admins can add/remove account memberships from the user detail page. Changing a member's account role still happens inside the account itself, not from the admin panel.
  • The list uses the Next.js proxy route /api/users which calls the REST admin endpoint underneath.
  • Deleting a user is permanent and cascades to all their data. Use with caution.
  • Accounts — which accounts a user belongs to
  • Audit Log — record of login / logout / admin events
  • OAuth Clients — public OAuth apps that can act on behalf of users