API reference — Operations

Nuvora.Nexus.Sentinel.Admin

Sentinel admin console: the React admin UI shipped as embedded static assets and served by MapSentinelAdminUi — consumers never run Node tooling.

dotnet add package Nuvora.Nexus.Sentinel.Admin

Nuvora.Nexus.Sentinel.Admin

SentinelAdminUiEndpoints

public static class SentinelAdminUiEndpoints

Serves the Sentinel admin console from the SPA bundle embedded in this assembly at build time (admin-ui/dist/** → sentinel-admin-ui/… manifest resources) — consumers get the UI from the NuGet package alone, no Node tooling involved.

THREAT MODEL — why the static routes require no authentication: the bundle is public, non-secret application code (exactly what any browser user could read from the JS anyway); it contains no data and no credentials. Every piece of DATA the app renders comes from the admin API groups, each of which authenticates the caller and fences per resource in the domain layer. Gating the HTML would add no protection — it would only break the login screen, which must load before a session exists (the UI authenticates through Sentinel itself).

Methods

static RouteGroupBuilder MapSentinelAdminUi(this IEndpointRouteBuilder endpoints, string prefix = "/sentinel-admin/ui")

Maps the SPA under prefix: {prefix} and every unknown non-asset path serve index.html (history-API fallback routing, so deep links like {prefix}/orgs work), hashed assets/* get immutable cache headers, and the index’s <base href> is rewritten to prefix so the relative-base bundle works under any mount point without a rebuild.