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