diff --git a/src/hooks.server.ts b/src/hooks.server.ts index c26afde..f9237c5 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,4 +1,4 @@ -import type { ServerInit } from "@sveltejs/kit"; +import { redirect, type ServerInit, type Handle } from "@sveltejs/kit"; import schedule from "node-schedule"; import { cleanupExpiredRefreshTokens } from "$lib/server/db/token"; @@ -7,3 +7,17 @@ export const init: ServerInit = () => { cleanupExpiredRefreshTokens(); }); }; + +export const handle: Handle = async ({ event, resolve }) => { + const path = event.url.pathname; + if (path.startsWith("/api") || path.startsWith("/auth")) { + return await resolve(event); + } + + const accessToken = event.cookies.get("accessToken"); + if (accessToken) { + return await resolve(event); + } else { + redirect(302, "/auth/login?redirect=" + encodeURIComponent(path)); + } +}; diff --git a/src/routes/(fullscreen)/auth/login/+page.server.ts b/src/routes/(fullscreen)/auth/login/+page.server.ts new file mode 100644 index 0000000..874e1be --- /dev/null +++ b/src/routes/(fullscreen)/auth/login/+page.server.ts @@ -0,0 +1,13 @@ +import { redirect } from "@sveltejs/kit"; +import type { PageServerLoad } from "./$types"; + +export const load: PageServerLoad = async ({ url, cookies }) => { + const redirectPath = url.searchParams.get("redirect") || "/"; + + const accessToken = cookies.get("accessToken"); + if (accessToken) { + redirect(302, redirectPath); + } + + return { redirectPath }; +}; diff --git a/src/routes/(fullscreen)/auth/login/+page.svelte b/src/routes/(fullscreen)/auth/login/+page.svelte index 0676741..5b13bab 100644 --- a/src/routes/(fullscreen)/auth/login/+page.svelte +++ b/src/routes/(fullscreen)/auth/login/+page.svelte @@ -1,9 +1,12 @@