From f7fe7cadbcc2b36bbc2049199fcb8cc46e056283 Mon Sep 17 00:00:00 2001 From: Zef Hemel Date: Wed, 11 Sep 2024 21:18:27 +0200 Subject: [PATCH] Revert "Attempt to fix auth proxies by making redirects manual #1028" This reverts commit d6fb5e0c29503563796735234521ee950150dc6a. --- common/spaces/http_space_primitives.ts | 41 +++++++++----------------- server/http_server.ts | 6 ++-- 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/common/spaces/http_space_primitives.ts b/common/spaces/http_space_primitives.ts index e2c686b4..efaa7098 100644 --- a/common/spaces/http_space_primitives.ts +++ b/common/spaces/http_space_primitives.ts @@ -34,46 +34,33 @@ export class HttpSpacePrimitives implements SpacePrimitives { try { options.signal = AbortSignal.timeout(fetchTimeout); - options.redirect = "manual"; const result = await fetch(url, options); if (result.status === 503) { throw new Error("Offline"); } - const redirectHeader = result.headers.get("location"); - - // console.log("Got response", result.status, result.statusText, result.url); - // Attempting to handle various authentication proxies - if (result.status >= 300 && result.status < 400) { - if (redirectHeader) { - // Got a redirect - alert("Received a redirect, redirecting to URL: " + redirectHeader); - location.href = redirectHeader; - throw new Error("Redirected"); - } else { - console.error("Got a redirect status but no location header", result); - } - } - // Check for unauthorized status - if (result.status === 401 || result.status === 403) { - // If it came with a redirect header, we'll redirect to that URL - if (redirectHeader) { + if (result.redirected) { + if (result.status === 401 || result.status === 403) { console.log( "Received unauthorized status and got a redirect via the API so will redirect to URL", result.url, ); - alert("You are not authenticated, redirecting to: " + redirectHeader); - location.href = redirectHeader; + alert("You are not authenticated, redirecting to: " + result.url); + location.href = result.url; throw new Error("Not authenticated"); } else { - // If not, let's reload - alert( - "You are not authenticated, going to reload and hope that that kicks off authentication", - ); - location.reload(); - throw new Error("Not authenticated, got 401"); + alert("Received a redirect, redirecting to URL: " + result.url); + location.href = result.url; + throw new Error("Redirected"); } } + if (result.status === 401 || result.status === 403) { + alert( + "You are not authenticated, going to reload and hope that that kicks off authentication", + ); + location.reload(); + throw new Error("Not authenticated, got 401"); + } return result; } catch (e: any) { // Errors when there is no internet connection: diff --git a/server/http_server.ts b/server/http_server.ts index 1407342e..0c6c351c 100644 --- a/server/http_server.ts +++ b/server/http_server.ts @@ -370,7 +370,7 @@ export class HttpServer { return c.redirect(typeof from === "string" ? from : "/"); } else { console.error("Authentication failed, redirecting to auth page."); - return c.redirect("/.auth?error=1", 401); + return c.redirect("/.auth?error=1"); } }, ).all((c) => { @@ -389,9 +389,9 @@ export class HttpServer { const redirectToAuth = () => { // Try filtering api paths if (req.path.startsWith("/.") || req.path.endsWith(".md")) { - return c.redirect("/.auth", 401); + return c.redirect("/.auth"); } else { - return c.redirect(`/.auth?from=${req.path}`, 401); + return c.redirect(`/.auth?from=${req.path}`); } }; if (!excludedPaths.includes(url.pathname)) {