Skip to main content

Admin Profile

The Profile page is a read-only summary of who you are inside the admin panel. It surfaces your name, email, role, and the school context you're attached to. There is currently no in-page editor — name/email changes go through the super admin who manages your account, and password changes go through either the set-password flow (first login) or the super-admin reset (later).

At a glance

Who can do thisAny logged-in admin (super admin or admin). Each user only sees their own profile.
Where it livesAdmin panel → /dashboard/profile (user icon in sidebar)
Editable on this page?No. Profile fields are display-only today.
Related featuresSub-Admin & Access Control · Admin Panel Overview

What's on the page

A single page split into three blocks (top to bottom):

  1. Hero card — large avatar, full name (or "Administrator" if first/last name aren't set), role tag (e.g. SUPER ADMIN, ADMIN), and email line.
  2. Administrative Credentials card (left column on desktop) — three rows in a Descriptions list:
    • Identity — full name
    • Registry Email — email address
    • Privilege Role — role rendered in uppercase (super_admin displays as SUPER ADMIN)
  3. Contextual Affiliation card (right column on desktop, dark slate background) — shows either:
    • Institutional Node with the school registry reference (#<schoolId>) if the user has a schoolId, OR
    • Global Governance / "Platform-wide administrator instance" for super admins and admins not pinned to a single school via schoolId

If useUserStore has no user (e.g. session expired before navigation), the page renders an empty state: "Profile Not Loaded — Please ensure you are logged in to view your administrative profile details."

What this page does NOT do

  • No name/email editor. To change name or email, a super admin must open /dashboard/admins, find the row, and use Edit Profile.
  • No password change form. Password is set once via /setup-password?token=... (from the invite email). To change it later, the user asks a super admin to reset it via the Reset Password modal on the Admins page.
  • No avatar upload. The avatar is the default user icon — there is no image picker.
  • No 2FA / MFA controls. Two-factor auth is not implemented in the admin panel today.
  • No session / device list. No way to view or revoke other active sessions from this page.

Step-by-step

1. Open Profile

  • Click the Profile entry in the sidebar (user icon).
  • Route: /dashboard/profile.

2. Confirm your identity

  • Verify the name, email, and role tag in the hero card match expectations.
  • If your name shows as "Administrator", your firstName / lastName weren't set when your admin user was created — ask the super admin to fill them in via Edit Profile on /dashboard/admins.

3. Check school affiliation

  • Right-hand card tells you whether you're scoped to a specific school (Institutional Node + school ID) or platform-wide (Global Governance).
  • Note: this card reads user.schoolId, which is a single-school pin. The richer "assigned schools" multi-select used for sub-admin scoping is not displayed on this page — see Sub-Admin & Access Control for the full assignment view.

Edge cases & things to test

  • Missing name: log in as an admin whose firstName / lastName are empty — confirm the hero shows "Administrator" and the Identity row gracefully falls back, no undefined artifacts.
  • Long email: test a 60-character email — confirm the hero line and Registry Email row don't overflow on mobile.
  • Role label: log in as super_admin — confirm tag reads SUPER ADMIN (underscore stripped). Same for admin.
  • No school context: a super admin with no schoolId — confirm the right card shows "Global Governance / Platform-wide administrator instance" and not a broken #null ID.
  • Pinned school context: an admin with schoolId set — confirm the right card shows Registry Reference: #<id>. Verify the displayed ID matches the school they actually have access to.
  • Stale session: clear the user from the store mid-session, then navigate to /dashboard/profile — confirm the empty-state ("Profile Not Loaded") renders cleanly and offers a path back to login.
  • Mobile layout: at <768px, confirm both cards stack vertically and the avatar/role tag wrap correctly.
  • Page after password reset: super admin resets your password, then you log back in — confirm Profile reflects everything correctly (no leftover stale data from the previous session).
  • Future-proof: as soon as edit-self or change-password is added, this page's edge-case list will need to grow.