Skip to main content

Users

By the end of this page you will know how to find any account, create one, pre-authorise a plan for someone who has not signed in yet, change a user's plan and limits, grant or remove admin rights, see the platform as a user sees it, and move everything a departing user owns to someone else.

Admin Panel → Platform → Users → All Users (/admin/users)

The user list

The page is headed User Management and has up to three tabs:

TabShows
All UsersEvery account
AdminsThe same table, filtered to admins
FacultyFaculty members. Only shown when the Education module is on. Faculty cannot use the admin panel in this release.
The Admins tab can over-count

It also lists GitLab instance administrators and anyone whose role label reads "Admin", neither of which grants admin rights here. For the real answer, open the user and read the Admin access card.

Finding someone

Search by name, email or username. After two characters a dropdown offers matches you can jump straight to. Narrow the table with the role filter (All Roles, User, Faculty, Admin) and the plan filter (All Plans, Free, Paid).

The table shows User, Role, Plan, Status, Last Sign In, Created and Actions. The row menu offers:

ItemWhat it doesConfirmation
View DetailsOpens the user's page
ImpersonateSigns you in as this user. See Impersonation.Yes
Set Faculty / Set UserChanges the role labelYes
Set Pro plan / Set Free planChanges the plan as an administrator overrideYes

Adding people

1. Pre-authorise a plan with Authorise user

Use this when someone will sign in through your identity provider and you want their plan ready for them.

Click Authorise user and fill in Email address, Plan (Pro or Free) and, optionally, Expires.

  • If the account already exists, the plan changes now.
  • If not, the plan is applied at their first sign-in.
  • When the expiry date passes, the plan drops back and any labs over the new limit are stopped.

Pending lists the emails you have authorised, with their plan and whether the account exists yet or is Awaiting first login. Revoke removes an entry immediately, without confirmation.

2. Create a local account with Add user

Use this for someone who will sign in with a username and password rather than through an identity provider.

Click Add user and fill in:

FieldNotes
EmailRequired
UsernameOptional
PasswordOptional, at least 8 characters. Needed for username and password sign-in.
PlanFree or Pro
Make platform adminGrants local admin rights on this platform
Account limitsOptional overrides: running labs, VPN devices, storage (GB), custom domains, managed services, WireGuard interfaces, and whether the user may create their own WireGuard interfaces

Click Create account. Account creation and any admin grant are audited.

The user's page

Open View Details from the list, or go to /admin/user/ followed by the person's email, username or ID. The banner shows their name, email and role, plan and state badges.

The top of a user's page: the Profile card with Role, Platform moderator and Plan, and the Admin access card with its two grant rows.

Profile

ControlWhat it doesAppliesAudited
Role (User, Faculty, Admin) + SaveChanges the role label. "Admin" here does not grant admin rights.Immediately, no confirmationYes
Platform moderatorMakes the user a moderator. See the admin guide overview.Immediately, no confirmationNo
Plan (Free, Default (Paid)) + SaveChanges the plan. Same effect as the list's plan items.Immediately, no confirmationSee below
Impersonate UserSee ImpersonationAfter confirmationYes
Transfer EntitlementsSee Handing over what a user ownsAfter typed confirmationYes

The stat tiles below show the user's Zeal and Jolt earned and spent, achievements, quizzes completed, active and total instances, clan and cohorts.

Admin access

This card is the authoritative view of whether someone is an admin.

GrantButtonsNotes
Local platform adminMake platform admin / Revoke local adminThis platform only
GitLab admin groupAdd to group / RemoveShown only when GitLab sign-in is set up, and not for local-only accounts. Applies to every platform sharing that GitLab.

Both ask for confirmation, both are audited, and both take effect at the user's next sign-in. The panel refuses to let you remove your own last admin grant, so you cannot lock yourself out.

Plan and limits

Shows the user's plan, where it comes from, and when it expires if it does. For each limit the table shows the Plan default, your Override, and the Effective value the user actually gets.

Limits you can override: running labs, VPN devices, storage (GB), custom domains, managed services and WireGuard interfaces, plus per-service caps and the switch that lets the user create their own WireGuard interfaces.

Enter a number and click Save limits. Blank or 0 means "use the plan default". There is no confirmation. Each changed field is audited.

Storage takes a few minutes

A storage change is applied and checked on the server, which can take minutes. The other limits save even if the storage change fails. Storage in depth is on Storage quotas.

What a plan change does

A plan change you make is an administrator override: it is not reverted the next time the user signs in.

A background job then enforces it and notifies the user:

  • a downgrade stops labs over the new limit and suspends excess VPN devices
  • an upgrade re-provisions the user's storage

The change and its outcome appear on the user's Lifecycle timeline: old plan, new plan, who changed it, how many labs were stopped or devices suspended, or "enforcement pending" until the job has run. Plan changes are recorded there and in server logs, not in the audit trail.

Stuck on "enforcement pending"?

The job runs every few minutes when it is scheduled. If a downgrade stays pending, open Config (Advanced) → Cron Workers and check that the plan-limits worker is scheduled. See Platform settings.

Other cards

CardWhat is there
User DetailsEmail, username, user ID, created, sign-in and activity times, plan. Links to the public profile and to Transactions.
Zeal Earnings BreakdownEarnings by type, with count and total
LifecyclePlan timeline, suspended devices, storage retirements, dormancy status
Recent Transactions (Zeal)The user's latest Zeal movements
Lab InstancesEvery lab the user has, with status
Cohort MembershipLinks to each cohort they belong to
GitLab ActionsAccount state on GitLab, see below
GitLab GroupsAdd the user to a GitLab group at an access level, or remove them
SSH KeysThe user's GitLab SSH keys, with Delete
Page VisitsPages the user visited, filtered by day or the last 7 days
Transactions link is not filtered

The Transactions → View All link opens the Transactions page for everyone, not just this user. Pick the user in its User filter. See Economy.

Impersonation

Impersonation signs you in as the user so you can see exactly what they see: their labs, tiles, shared resources and limits.

  1. Open the user's page and click Impersonate User, or use Impersonate in the list's row menu.
  2. Confirm.
  3. When you are done, open the profile menu and choose End Impersonation.

Two limits:

  • It needs a recent sign-in. If yours is too old you see "Re-authentication required". Sign out, sign back in, and try again.
  • It works only for accounts that sign in through GitLab, not local-only accounts.

Starting and ending impersonation are both audited. Everything you do while impersonating is done as that user, so treat it as acting on their behalf.

Signing someone out and blocking them

The GitLab Actions card controls the user's GitLab account:

ButtonEffect
Sync from GitLabRefreshes the user's details from GitLab. No confirmation.
Block / UnblockBlocks or unblocks the GitLab account
Deactivate / ActivateDeactivates or reactivates the GitLab account

Block and Deactivate take effect on GitLab immediately and sign the user out of every session they already have on this platform. These are audited and ask for confirmation.

The card also shows the GitLab state, a link to the GitLab profile, two-factor status and when the account was last synced.

Handing over what a user owns

Transfer Entitlements moves everything a user owns to another user. Use it when someone leaves and their work must carry on.

  1. Click Transfer Entitlements. A preview lists what they own, with counts: organization and department ownership, domains, VPN devices, reserved addresses, lab templates, provisioned services, home storage data, and their access grants (which are revoked).
  2. Read the two warnings in the preview:
    • what is never transferred: running instances, Zeal and Jolt balances, SSH keys, the GitLab account link, uploads and notifications
    • any running labs, which are stopped before the transfer
  3. Pick the recipient and the categories to move.
  4. Type TRANSFER followed by the recipient's email.
  5. Optionally tick Override the recipient's services cap (audited) if the recipient would otherwise go over their services limit.
  6. Click Execute transfer.

You get a report for each item: moved, queued, skipped or failed. If anything failed, Retry failed tries those items again.

A transfer cannot be undone

The only way back is another transfer in the opposite direction. The whole transfer is audited.

Offboarding and personal data

To offboard someone, transfer what should be kept, then Block or Deactivate their GitLab account so they are signed out everywhere.

Exporting or erasing a person's data on request has no button in the panel in this release. Ask your engineering team. Erasure is irreversible: it removes stored files permanently and de-identifies the person's records, and it refuses to run until the person's live resources have been offboarded.

Next