Awn Awn
Back to Awn
Documentation menu — Super Admin pages and widgets
Build / Super Admin pages and widgets
Version
1.0
Last verified
2026-08-09

Super Admin pages and widgets

Super Admin surfaces are global platform tools. They are separate from organization management and public/theme pages. They exist only while the plugin is installed and globally active; tenant enablement and active theme do not affect them.

Pages and navigation

Implement ContributesSuperAdminPages:

public function superAdminPages(): array
{
    return [
        new PluginSuperAdminPage(
            id: 'orders-platform-overview',
            title: 'Overview',
            description: 'Orders across the platform.',
            routeName: 'plugin.orders.admin.overview',
            icon: DashboardIcon::Chart,
            order: 70,
        ),
    ];
}

Each plugin becomes one Super Admin sidebar submenu. IDs are kebab-case; route names are globally unique. Use overview/index links as contributions and keep parameterized details contextual.

Required route convention:

Route::middleware([
    'web',
    'auth',
    'super.admin',
    'plugin.available:orders,installed',
])
    ->prefix('/admin/plugins/orders/manage')
    ->name('plugin.orders.admin.')
    ->group(function (): void {
        Route::get('/', PlatformOverviewController::class)->name('overview');
    });

Definition validation requires:

  • plugin.{slug}.admin.* route names;
  • /admin/plugins/{slug}/manage paths;
  • auth, super.admin, and installed-mode plugin availability;
  • no organization.route or organization.member;
  • existing, unique contributed routes.

/admin/plugins remains the read-only platform catalog. Plugin operational pages live under their own /manage prefix.

Super Admin dashboard widgets

Implement ContributesSuperAdminWidgets:

public function superAdminWidgets(): array
{
    return [
        new PluginSuperAdminWidget(
            id: 'orders-platform-overview',
            view: view('plugin.orders::admin.widgets.overview', [
                'totalOrders' => Order::query()->count(),
            ]),
            order: 20,
        ),
    ];
}

Widgets render on admin.dashboard, are globally ordered, and disappear when the plugin is globally deactivated.

Cross-tenant data

EnsureSuperAdmin establishes tenant bypass before the controller or widget query runs. Global pages must:

  • remain behind super.admin on every direct route;
  • show organization identity beside every tenant-owned record;
  • default to read-only oversight;
  • avoid exposing private files or credentials;
  • use explicit filters and bounded pagination;
  • never reuse organization routes through impersonation as a global API.

Fundraising demonstrates a read-only overview, all-projects page, all-donations page, and global widget. Donation decisions and proof downloads remain inside the responsible organization's dashboard.

What this surface is not

Super Admin contributions do not use ContributesPages, theme slots, theme capabilities, or organization widgets. They also do not make install/purge available through the browser; global lifecycle remains CLI-only.