diff --git a/src/ZB.MOM.WW.MxGateway.Server/Configuration/DashboardOptions.cs b/src/ZB.MOM.WW.MxGateway.Server/Configuration/DashboardOptions.cs index 3b38ea1..a0f888c 100644 --- a/src/ZB.MOM.WW.MxGateway.Server/Configuration/DashboardOptions.cs +++ b/src/ZB.MOM.WW.MxGateway.Server/Configuration/DashboardOptions.cs @@ -8,6 +8,23 @@ public sealed class DashboardOptions /// Gets whether anonymous localhost access to dashboard is allowed. public bool AllowAnonymousLocalhost { get; init; } = true; + /// + /// DEV/TEST ONLY. When true, the dashboard bypasses the login form entirely and + /// auto-authenticates EVERY request as holding both + /// dashboard roles (Administrator + Viewer). No cookie, no LDAP bind. Default false. + /// Unlike (which only succeeds the authorization + /// requirement without authenticating), this mints a real principal, so the UI behaves + /// as a signed-in admin and applies to all clients (not just loopback). Never enable in + /// production. See docs/plans/2026-06-16-dashboard-disable-login-design.md. + /// + public bool DisableLogin { get; init; } + + /// + /// Username minted for the auto-login principal when is true. + /// Null/blank falls back to the GLAuth Administrator test user multi-role. + /// + public string? AutoLoginUser { get; init; } + /// /// When true (default), the dashboard auth cookie is restricted to HTTPS /// requests via . diff --git a/src/ZB.MOM.WW.MxGateway.Tests/Configuration/GatewayOptionsTests.cs b/src/ZB.MOM.WW.MxGateway.Tests/Configuration/GatewayOptionsTests.cs index 03385a2..d36572f 100644 --- a/src/ZB.MOM.WW.MxGateway.Tests/Configuration/GatewayOptionsTests.cs +++ b/src/ZB.MOM.WW.MxGateway.Tests/Configuration/GatewayOptionsTests.cs @@ -121,6 +121,18 @@ public sealed class GatewayOptionsTests StringComparison.Ordinal); } + [Fact] + public void DashboardOptions_DisableLogin_DefaultsToFalse() + { + Assert.False(new DashboardOptions().DisableLogin); + } + + [Fact] + public void DashboardOptions_AutoLoginUser_DefaultsToNull() + { + Assert.Null(new DashboardOptions().AutoLoginUser); + } + private static GatewayOptions BindOptions(IReadOnlyDictionary configurationValues) { using ServiceProvider services = BuildServices(configurationValues);