feat(dashboard): add DisableLogin + AutoLoginUser options (default off)
This commit is contained in:
@@ -8,6 +8,23 @@ public sealed class DashboardOptions
|
||||
/// <summary>Gets whether anonymous localhost access to dashboard is allowed.</summary>
|
||||
public bool AllowAnonymousLocalhost { get; init; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// DEV/TEST ONLY. When true, the dashboard bypasses the login form entirely and
|
||||
/// auto-authenticates EVERY request as <see cref="AutoLoginUser"/> holding both
|
||||
/// dashboard roles (Administrator + Viewer). No cookie, no LDAP bind. Default false.
|
||||
/// Unlike <see cref="AllowAnonymousLocalhost"/> (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.
|
||||
/// </summary>
|
||||
public bool DisableLogin { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Username minted for the auto-login principal when <see cref="DisableLogin"/> is true.
|
||||
/// Null/blank falls back to the GLAuth Administrator test user <c>multi-role</c>.
|
||||
/// </summary>
|
||||
public string? AutoLoginUser { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// When true (default), the dashboard auth cookie is restricted to HTTPS
|
||||
/// requests via <see cref="Microsoft.AspNetCore.Http.CookieSecurePolicy.Always"/>.
|
||||
|
||||
@@ -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<string, string?> configurationValues)
|
||||
{
|
||||
using ServiceProvider services = BuildServices(configurationValues);
|
||||
|
||||
Reference in New Issue
Block a user