mc-dashboard/components
hurkicorgi 1ac5513d2c Role-based access: admin vs superadmin
- Credentials provider now resolves two distinct accounts from env:
    SUPERADMIN_USERNAME / SUPERADMIN_PASSWORD → role "superadmin"
    ADMIN_USERNAME      / ADMIN_PASSWORD      → role "admin"
  The role is carried through the JWT and Session callbacks so the UI
  and API can gate on it. Types extended via types/next-auth.d.ts.
- lib/auth.ts exports requireRole(minRole) and sessionRole(session).
- /api/players POST rejects "op" and "deop" with 403 unless the caller
  is superadmin. All other player actions (whitelist add/remove, ban,
  pardon) remain available to both roles.
- lib/use-role.ts (client hook) exposes role / isSuperadmin / authed
  for UI gating without duplicating session typing.
- PlayerManager: Add-OP button and per-row Deop action are hidden or
  disabled for non-superadmin; when a regular admin is viewing the
  Ops tab, a banner explains the read-only state.
- PlayerDrawer: Make Op / Deop button disabled with tooltip for
  non-superadmin; whitelist, ban, pardon unchanged.
- Navbar: subtle role pill next to the user name ("Super" for
  superadmin amber-tinted, "Admin" for admin).
- Migration note: the existing ADMIN_* credentials now log in as the
  restricted admin role. Set SUPERADMIN_USERNAME + SUPERADMIN_PASSWORD
  in .env.local to retain operator-management ability. A placeholder
  superadmin account was generated in .env.local; the password is in
  the commit terminal output only, not the repo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 06:52:05 -06:00
..
ui Initial commit: Minecraft dashboard 2026-04-13 00:46:58 -06:00
AdminTabs.tsx Expanded scheduled tasks + keyboard shortcuts 2026-04-13 05:57:39 -06:00
Analytics.tsx Per-player playtime tracking + sparkline hover tooltips 2026-04-13 06:24:13 -06:00
BackupManager.tsx UX polish pass 2: toasts, optimistic updates, mod update detection 2026-04-13 05:11:17 -06:00
ChatBridge.tsx SSE events bridge, PWA service worker, offline banner, lazy admin tabs 2026-04-13 05:48:00 -06:00
ClientOnly.tsx Initial commit: Minecraft dashboard 2026-04-13 00:46:58 -06:00
CommandPalette.tsx Pass 3 first slice: mod update action, error boundaries, a11y, palette 2026-04-13 05:30:23 -06:00
DownloadCard.tsx Initial commit: Minecraft dashboard 2026-04-13 00:46:58 -06:00
ErrorReporter.tsx Bundle analyzer, task run-now/toggle/weekly, error reporter, OG image, a11y 2026-04-13 06:08:48 -06:00
EventsBridge.tsx SSE events bridge, PWA service worker, offline banner, lazy admin tabs 2026-04-13 05:48:00 -06:00
Leaderboard.tsx Rich per-player stats + pick-your-metric leaderboard 2026-04-13 06:37:50 -06:00
LogViewer.tsx Bundle analyzer, task run-now/toggle/weekly, error reporter, OG image, a11y 2026-04-13 06:08:48 -06:00
ModList.tsx UX/UI/perf pass: admin tabs, theme toggle, log polish, mod search, JAR cache 2026-04-13 04:58:25 -06:00
ModManager.tsx Bundle analyzer, task run-now/toggle/weekly, error reporter, OG image, a11y 2026-04-13 06:08:48 -06:00
Navbar.tsx Role-based access: admin vs superadmin 2026-04-13 06:52:05 -06:00
OfflineBanner.tsx SSE events bridge, PWA service worker, offline banner, lazy admin tabs 2026-04-13 05:48:00 -06:00
PlayerAvatar.tsx Pass 3 next slice: snapshot polish, analytics depth, player drawer 2026-04-13 05:39:32 -06:00
PlayerDrawer.tsx Role-based access: admin vs superadmin 2026-04-13 06:52:05 -06:00
PlayerManager.tsx Role-based access: admin vs superadmin 2026-04-13 06:52:05 -06:00
ScheduledTasks.tsx Bundle analyzer, task run-now/toggle/weekly, error reporter, OG image, a11y 2026-04-13 06:08:48 -06:00
ServerControls.tsx Bundle analyzer, task run-now/toggle/weekly, error reporter, OG image, a11y 2026-04-13 06:08:48 -06:00
ServiceWorkerRegister.tsx SSE events bridge, PWA service worker, offline banner, lazy admin tabs 2026-04-13 05:48:00 -06:00
StatusBadge.tsx Initial commit: Minecraft dashboard 2026-04-13 00:46:58 -06:00
StatusCard.tsx Bundle analyzer, task run-now/toggle/weekly, error reporter, OG image, a11y 2026-04-13 06:08:48 -06:00
ThemeToggle.tsx UX/UI/perf pass: admin tabs, theme toggle, log polish, mod search, JAR cache 2026-04-13 04:58:25 -06:00