From 8b06a1414d147f942259ef26341c3c9a62b14745 Mon Sep 17 00:00:00 2001 From: rhpidfyre <brandon@rhpidfyre.io> Date: Wed, 26 Mar 2025 21:11:43 -0400 Subject: [PATCH 1/2] web: switch to using `/api/session/validate` for determining if the user is not logged in --- web/src/app/_components/webpage.tsx | 35 ++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/web/src/app/_components/webpage.tsx b/web/src/app/_components/webpage.tsx index 6119987..14c4ec9 100644 --- a/web/src/app/_components/webpage.tsx +++ b/web/src/app/_components/webpage.tsx @@ -1,8 +1,33 @@ +"use client" + +import { redirect } from "next/navigation"; +import { useEffect } from "react"; + import Header from "./header"; +async function login_check() { + try { + const response = await fetch("/api/session/validate") + if (response.ok) { + const logged_in = await response.json() + if (logged_in.code === 500) { + redirect("https://auth.staging.strafes.net/") + } + } else { + console.error("No response from /api/session/validate") + } + } catch (error) { + console.error("Error getting login status:", error) + } +} + export default function Webpage({children}: Readonly<{children?: React.ReactNode}>) { - return (<> - <Header/> - {children} - </>) -} \ No newline at end of file + useEffect(() => { + login_check() + }, []) + + return <> + <Header/> + {children} + </> +} -- 2.47.1 From d089872432d35687471c816670f88ca0423c8442 Mon Sep 17 00:00:00 2001 From: rhpidfyre <brandon@rhpidfyre.io> Date: Thu, 27 Mar 2025 12:17:04 -0400 Subject: [PATCH 2/2] web: use param `?redirect=` with auth redirection and switch to a boolean check for `/api/session/validate` --- web/src/app/_components/webpage.tsx | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/web/src/app/_components/webpage.tsx b/web/src/app/_components/webpage.tsx index 14c4ec9..2c64aba 100644 --- a/web/src/app/_components/webpage.tsx +++ b/web/src/app/_components/webpage.tsx @@ -6,25 +6,19 @@ import { useEffect } from "react"; import Header from "./header"; async function login_check() { - try { - const response = await fetch("/api/session/validate") - if (response.ok) { - const logged_in = await response.json() - if (logged_in.code === 500) { - redirect("https://auth.staging.strafes.net/") - } - } else { - console.error("No response from /api/session/validate") + const response = await fetch("/api/session/validate") + if (response.ok) { + const logged_in = await response.json() + if (!logged_in) { + redirect("https://auth.staging.strafes.net/oauth2/login?redirect=" + window.location.href) } - } catch (error) { - console.error("Error getting login status:", error) + } else { + console.error("No response from /api/session/validate") } } export default function Webpage({children}: Readonly<{children?: React.ReactNode}>) { - useEffect(() => { - login_check() - }, []) + useEffect(() => { login_check() }, []) return <> <Header/> -- 2.47.1