diff --git a/src/middleware/index.ts b/src/middleware/index.ts index 2a4494b..efd11fa 100644 --- a/src/middleware/index.ts +++ b/src/middleware/index.ts @@ -2,8 +2,9 @@ import { defineMiddleware } from "astro:middleware"; import { supabase } from "../lib/supabase"; import micromatch from "micromatch"; -const protectedRoutes = ["/dashboard(|/)", "/api/guestbook(|/)"]; +const protectedRoutes = ["/dashboard(|/)"]; const redirectRoutes = ["/signin(|/)", "/register(|/)"]; +const proptectedAPIRoutes = ["/api/guestbook(|/)"]; export const onRequest = defineMiddleware( async ({ locals, url, cookies, redirect }, next) => { @@ -51,7 +52,37 @@ export const onRequest = defineMiddleware( return redirect("/dashboard"); } } - + + if (micromatch.isMatch(url.pathname, proptectedAPIRoutes)) { + const accessToken = cookies.get("sb-access-token"); + const refreshToken = cookies.get("sb-refresh-token"); + + // Check for tokens + if (!accessToken || !refreshToken) { + return new Response( + JSON.stringify({ + error: "Unauthorized", + }), + { status: 401 }, + ); + } + + // Verify the tokens + const { error } = await supabase.auth.setSession({ + access_token: accessToken.value, + refresh_token: refreshToken.value, + }); + + if (error) { + return new Response( + JSON.stringify({ + error: "Unauthorized", + }), + { status: 401 }, + ); + } + } + return next(); }, );