Files
ACVE/lib/supabase/middleware.ts
2026-02-17 00:07:00 +00:00

50 lines
1.3 KiB
TypeScript
Executable File

import { NextResponse, type NextRequest } from "next/server";
import { createServerClient, type CookieOptions } from "@supabase/ssr";
import { readSupabasePublicConfig } from "@/lib/supabase/config";
export type SessionSnapshot = {
response: NextResponse;
isAuthed: boolean;
userEmail: string | null;
isConfigured: boolean;
};
export const updateSession = async (req: NextRequest): Promise<SessionSnapshot> => {
const response = NextResponse.next({ request: req });
const config = readSupabasePublicConfig();
if (!config) {
return {
response,
isAuthed: false,
userEmail: null,
isConfigured: false,
};
}
const supabase = createServerClient(config.url, config.anonKey, {
cookies: {
getAll: () => req.cookies.getAll(),
setAll: (
cookiesToSet: Array<{
name: string;
value: string;
options?: CookieOptions;
}>,
) => {
cookiesToSet.forEach(({ name, value, options }) => {
response.cookies.set(name, value, options);
});
},
},
});
const { data } = await supabase.auth.getUser();
return {
response,
isAuthed: Boolean(data?.user),
userEmail: data.user?.email ?? null,
isConfigured: true,
};
};