diff --git a/web/src/app/_components/webpage.tsx b/web/src/app/_components/webpage.tsx
index 6119987..2c64aba 100644
--- a/web/src/app/_components/webpage.tsx
+++ b/web/src/app/_components/webpage.tsx
@@ -1,8 +1,27 @@
+"use client"
+
+import { redirect } from "next/navigation";
+import { useEffect } from "react";
+
 import Header from "./header";
 
+async function login_check() {
+	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)
+		}
+	} else {
+		console.error("No response from /api/session/validate")
+	}
+}
+
 export default function Webpage({children}: Readonly<{children?: React.ReactNode}>) {
-    return (<>
-        <Header/>
-        {children}
-    </>)
-}
\ No newline at end of file
+	useEffect(() => { login_check() }, [])
+
+	return <>
+		<Header/>
+		{children}
+	</>
+}