Dashboard-Automatizase/middleware.ts
Luis Erlacher 0152a2fda0 feat: add n8n API testing script for Google OAuth2 schema and existing credentials
- Implemented a bash script to test n8n API and retrieve credential schemas.
- Added types for API responses, Google Calendar, and WhatsApp instances.
- Configured Vitest for testing with React and added setup for testing-library.
2025-10-10 14:29:02 -03:00

61 lines
1.6 KiB
TypeScript

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"],
};