import { createServerClient } from "@supabase/ssr"; import { type NextRequest, NextResponse } from "next/server"; export async function middleware(request: NextRequest) { let supabaseResponse = 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(cookiesToSet) { cookiesToSet.forEach(({ name, value }) => { request.cookies.set(name, value); }); supabaseResponse = NextResponse.next({ request, }); cookiesToSet.forEach(({ name, value, options }) => { supabaseResponse.cookies.set(name, value, options); }); }, }, }, ); const { data: { user }, } = await supabase.auth.getUser(); // Redirecionar rota raiz if (request.nextUrl.pathname === "/") { if (user) { return NextResponse.redirect(new URL("/dashboard", request.url)); } else { return NextResponse.redirect(new URL("/login", request.url)); } } // Proteger /dashboard if (request.nextUrl.pathname.startsWith("/dashboard") && !user) { return NextResponse.redirect(new URL("/login", request.url)); } // Redirecionar de /login para /dashboard se já autenticado if (request.nextUrl.pathname === "/login" && user) { return NextResponse.redirect(new URL("/dashboard", request.url)); } return supabaseResponse; } export const config = { matcher: ["/", "/dashboard/:path*", "/login"], };