1475991fd6
M1: PageErrorBoundary wraps the body of every InteractiveServer page; the inert layout boundary is removed. m1: DisposeBridge cancels its CTS when the 5 s wait times out. m2: a CSV import that commits after the modal closed still raises OnSaved. m3: document SecurityMode=None no-fallback in Client.CLI.md / Client.UI.md. m4: browsePageDelayMs written only when loaded or changed; negative flagged. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
23 lines
1.2 KiB
Plaintext
23 lines
1.2 KiB
Plaintext
@page "/admin/secrets"
|
|
@attribute [Authorize(Policy = ZB.MOM.WW.Secrets.Ui.SecretsAuthorization.ManagePolicy)]
|
|
@rendermode RenderMode.InteractiveServer
|
|
@using ZB.MOM.WW.Secrets.Ui
|
|
|
|
@* Host-side wrapper for the ZB.MOM.WW.Secrets.Ui secrets page (lmxopcua#483).
|
|
|
|
This host's <Routes/> is deliberately static (cookie SignInAsync needs SSR), so every
|
|
interactive page opts in per-page with @rendermode — a directive the RCL's own routable
|
|
SecretsPage cannot carry, because the other three family hosts render it under a globally
|
|
interactive router where a nested render mode throws. Routing straight to the RCL page
|
|
therefore produced a statically-rendered, dead page here: no circuit, @onclick inert.
|
|
|
|
So this wrapper owns the /admin/secrets route in THIS host (the RCL assembly is no longer
|
|
passed to either AdditionalAssemblies registration — doing both would make the route
|
|
ambiguous), carries the standard per-page render mode, re-states the RCL page's own
|
|
authorization policy (the router only enforces [Authorize] on the routed page itself,
|
|
which is now this one), and renders the RCL page as an ordinary child component. *@
|
|
|
|
<PageErrorBoundary>
|
|
<SecretsPage />
|
|
</PageErrorBoundary>
|