From 8fac2d49e5c7f6d1de3e0df16fd05b88bffbc900 Mon Sep 17 00:00:00 2001 From: Eugene Samotija Date: Sat, 25 Jul 2026 10:27:44 +0300 Subject: [PATCH] admin: show the Microsoft button only when interactive login exists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same /health-driven gating me.html already has — on token-only deployments the sign-in panel no longer renders a "Sign in with Microsoft" button that would 404 on /auth/login. Copy adjusted so the token paragraph reads standalone; UI guide screenshot and note updated. Co-Authored-By: Claude Fable 5 --- docs/img/admin-signin.png | Bin 33735 -> 30963 bytes docs/ui-guide.md | 7 ++++--- packages/gateway/public/admin.html | 9 +++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/img/admin-signin.png b/docs/img/admin-signin.png index 05c59ef65287a6cef17fb1a684bf25393d2f8242..20cdf26a84437d7324dcf0b11cabc35484bcf2b3 100644 GIT binary patch literal 30963 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 literal 33735 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 B*XjTO diff --git a/docs/ui-guide.md b/docs/ui-guide.md index be1f75c..92e73e4 100644 --- a/docs/ui-guide.md +++ b/docs/ui-guide.md @@ -38,10 +38,11 @@ credentials are keyed by them. ## `/admin` — operator console -![Admin sign-in](img/admin-signin.png) +![Admin sign-in on a token-only deployment](img/admin-signin.png) -> The Microsoft button is always rendered here; on a deployment without -> interactive login just ignore it and paste an admin token. +As on `/me`, the Microsoft button appears only when interactive login is +configured (the page checks `/health`); on a token-only deployment you get just +the token box, shown above. ### Status diff --git a/packages/gateway/public/admin.html b/packages/gateway/public/admin.html index 324b50f..8ae5ff2 100644 --- a/packages/gateway/public/admin.html +++ b/packages/gateway/public/admin.html @@ -71,10 +71,10 @@

MSPStack Gateway

Admin sign in

-
+ -

Or paste an admin bearer token (a static MCP_TOKENS_ADMIN token or an OIDC access token for this gateway) — break-glass for when interactive login is unavailable.

+

Paste an admin bearer token (a static MCP_TOKENS_ADMIN token or an OIDC access token for this gateway) — break-glass for when interactive login is unavailable.

@@ -619,6 +619,11 @@

${esc(p.title)}

roles: renderRoles, users: renderUsers, secrets: renderSecrets }; async function boot() { + // Show the Microsoft button only when interactive login actually exists — + // /health reports it; on failure keep it hidden and rely on the token box. + fetch("/health").then(r => r.json()) + .then(h => $("#oidc-row").classList.toggle("hidden", !h.login)) + .catch(() => {}); if (TOKEN) { login(TOKEN); return; } // No pasted token — try an existing cookie session (Sign in with Microsoft). try {