From ab51d9256e7f2e731a16736a7e345f3d2e87cc8a Mon Sep 17 00:00:00 2001 From: XShine555 Date: Tue, 22 Sep 2026 16:29:58 +0200 Subject: [PATCH] Fix permanent login failure after Zitadel restarts getOidcConfig() memoized the discovery promise even when it rejected, so a single failed OIDC discovery (e.g. Zitadel not ready yet when the dev server starts) permanently broke /auth/login until the process was restarted. Clear the cached promise on rejection so it retries. Co-Authored-By: Claude Sonnet 5 --- web-player/src/lib/server/auth.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web-player/src/lib/server/auth.ts b/web-player/src/lib/server/auth.ts index 3aaaee7..ac045e2 100644 --- a/web-player/src/lib/server/auth.ts +++ b/web-player/src/lib/server/auth.ts @@ -17,7 +17,7 @@ export interface Session extends SessionUser { expiresAt: number; } -let configPromise: Promise; +let configPromise: Promise | undefined; export function getOidcConfig(): Promise { configPromise ??= (async () => { const issuer = new URL(authConfig.issuer); @@ -28,7 +28,10 @@ export function getOidcConfig(): Promise { return secret ? client.discovery(issuer, authConfig.clientId, secret, undefined, options) : client.discovery(issuer, authConfig.clientId, undefined, client.None(), options); - })(); + })().catch((exception) => { + configPromise = undefined; + throw exception; + }); return configPromise; }