engresearch's picture
Upload folder using huggingface_hub
7f88bdf verified
import { createServerClient } from "@supabase/ssr";
import { NextResponse, type NextRequest } from "next/server";
const PUBLIC_PATHS = [
"/",
"/login",
"/signup",
"/auth/callback",
"/console",
"/admin",
"/api/payments/mpesa/callback",
];
const API_ADMIN_PATHS = ["/api/admin"];
function isPublic(pathname: string) {
// API routes that use their own auth (header-based) should pass through
if (pathname.startsWith("/api/")) return true;
return PUBLIC_PATHS.some(
(p) => pathname === p || pathname.startsWith(p + "/")
);
}
export async function proxy(request: NextRequest) {
const { pathname } = request.nextUrl;
if (isPublic(pathname)) {
return NextResponse.next();
}
let response = NextResponse.next({ request });
const supabase = createServerClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
{
cookies: {
getAll() {
return request.cookies.getAll();
},
setAll(tokens) {
for (const { name, value, options } of tokens) {
request.cookies.set(name, value);
response = NextResponse.next({ request });
response.cookies.set(name, value, options);
}
},
},
}
);
const {
data: { user },
} = await supabase.auth.getUser();
if (!user) {
const loginUrl = new URL("/login", request.url);
loginUrl.searchParams.set("redirect", pathname);
return NextResponse.redirect(loginUrl);
}
return response;
}
export const config = {
matcher: [
"/((?!_next/static|_next/image|favicon.ico|manifest.json|sw.js|icons/).*)",
],
};