Vantz Stockwell
29615cb4f3
feat(redesign): re-skin admin-ops/platform-admin/public views to DS (Phase D batch 4 — panel re-skin complete)
...
Test Asgard Runner / test (push) Successful in 3s
Final re-skin batch: admin ops (Console/FileManager[VueFinder preserved]/WipeCalendar/WipeHistory/Changelog/Migration), platform-admin (Dashboard/Licenses/Servers/Subscriptions/Users), public product pages (ServerInfo/StatusPage/StoreView) + PublicLayout, WarpEditor, ErrorBoundary. All logic/store/router/WebSocket/handlers preserved. Marketing views (Landing/Pricing/FAQ/HowItWorks/Roadmap/EarlyAccess + MarketingLayout) intentionally deferred to the dedicated marketing-site redesign. Build green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-11 02:55:02 -04:00
Vantz Stockwell
8253680fbd
fix: License key format, login populates license, case-insensitive email
...
Test Asgard Runner / test (push) Successful in 3s
- admin.service.ts: createLicense() now uses CORR-XXXX-XXXX-XXXX format
instead of raw hex hash
- admin.service.ts: getLicenses() flattens owner_email in response to
match frontend expected shape
- auth.service.ts: Login/register responses now include full license
object so frontend can populate auth store
- auth.service.ts: Email lookups are case-insensitive (LOWER()) to
prevent duplicate accounts from case variations
- LoginView/RegisterView: Call setLicense() after setAuth()
- AdminLicenses: Handle null expires_at (was showing Dec 31, 1969),
fix nullable types, fix query param name (per_page → limit)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:32:35 -05:00
Vantz Stockwell
88b50a30b4
feat: Phase 1c — Platform Admin Dashboard
...
Full super-admin dashboard for SaaS platform management:
Backend (10 files):
- Migration 003: Add is_super_admin column to users table
- JWT Claims: Carry is_super_admin through access tokens
- SuperAdmin extractor: Axum FromRequestParts that rejects non-admins (403)
- Admin API module: 10 endpoints behind /api/admin/*
- GET /stats (KPIs: licenses, users, MRR, servers, signups)
- GET/POST /licenses (paginated, filterable, manual generation)
- GET/PATCH /licenses/:id (detail view, revoke/activate)
- GET /subscriptions (module sub list with MRR breakdown)
- GET/PATCH /users (paginated, toggle admin, disable accounts)
- GET /servers (fleet overview across all licenses)
- GET /health (DB pool, NATS status, table row counts)
- Bootstrap updated: first user gets is_super_admin = true
Frontend (8 files):
- 5 admin views in src/views/platform-admin/
- DashboardLayout: "Platform" nav section (gated on isSuperAdmin)
- Router: /admin/* routes with superAdmin meta guard
- Auth store: isSuperAdmin computed property
- Types: is_super_admin on User interface
Build: 80 chunks, zero TS errors, clean production build.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-15 02:07:38 -05:00
Vantz Stockwell
0ac1738c85
feat: Add 5 Platform Admin views for super-admin dashboard
...
- AdminDashboard: KPI cards (licenses, users, MRR, servers, signups) + quick links
- AdminLicenses: Searchable paginated table with detail panel, CSV export, license generation
- AdminSubscriptions: MRR summary cards, per-module breakdown, subscriber table
- AdminUsers: Paginated user table with super admin toggle and account disable actions
- AdminServers: Filterable server table with connection type badges, status dots, relative heartbeat times
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-15 02:04:31 -05:00