diff --git a/middleware.ts b/middleware.ts index 800c964..babfde2 100644 --- a/middleware.ts +++ b/middleware.ts @@ -2,14 +2,37 @@ import { createServerClient } from "@supabase/ssr"; import { NextResponse, type NextRequest } from "next/server"; export async function middleware(request: NextRequest) { - let supabaseResponse = NextResponse.next({ - request, - }); + // Si les env vars Supabase ne sont pas configurees, laisser passer + const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL; + const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY; - const supabase = createServerClient( - process.env.NEXT_PUBLIC_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, - { + if ( + !supabaseUrl || + !supabaseAnonKey || + supabaseUrl.includes("your-project") || + supabaseAnonKey === "your-anon-key" + ) { + // Pas de Supabase configure : rediriger les routes protegees vers login + const protectedPaths = ["/dashboard", "/formations", "/profil"]; + const isProtected = protectedPaths.some((p) => + request.nextUrl.pathname.startsWith(p) + ); + + if (isProtected) { + const url = request.nextUrl.clone(); + url.pathname = "/login"; + return NextResponse.redirect(url); + } + + return NextResponse.next(); + } + + try { + let supabaseResponse = NextResponse.next({ + request, + }); + + const supabase = createServerClient(supabaseUrl, supabaseAnonKey, { cookies: { getAll() { return request.cookies.getAll(); @@ -26,37 +49,41 @@ export async function middleware(request: NextRequest) { ); }, }, + }); + + const { + data: { user }, + } = await supabase.auth.getUser(); + + // Rediriger vers login si pas connecte et route protegee + if ( + !user && + (request.nextUrl.pathname.startsWith("/dashboard") || + request.nextUrl.pathname.startsWith("/formations") || + request.nextUrl.pathname.startsWith("/profil")) + ) { + const url = request.nextUrl.clone(); + url.pathname = "/login"; + return NextResponse.redirect(url); } - ); - const { - data: { user }, - } = await supabase.auth.getUser(); + // Rediriger vers dashboard si deja connecte et sur login/register + if ( + user && + (request.nextUrl.pathname === "/login" || + request.nextUrl.pathname === "/register") + ) { + const url = request.nextUrl.clone(); + url.pathname = "/dashboard"; + return NextResponse.redirect(url); + } - // Rediriger vers login si pas connecte et route protegee - if ( - !user && - (request.nextUrl.pathname.startsWith("/dashboard") || - request.nextUrl.pathname.startsWith("/formations") || - request.nextUrl.pathname.startsWith("/profil")) - ) { - const url = request.nextUrl.clone(); - url.pathname = "/login"; - return NextResponse.redirect(url); + return supabaseResponse; + } catch (e) { + console.error("Middleware error:", e); + // En cas d'erreur, laisser passer la requete plutot que crasher + return NextResponse.next(); } - - // Rediriger vers dashboard si deja connecte et sur login/register - if ( - user && - (request.nextUrl.pathname === "/login" || - request.nextUrl.pathname === "/register") - ) { - const url = request.nextUrl.clone(); - url.pathname = "/dashboard"; - return NextResponse.redirect(url); - } - - return supabaseResponse; } export const config = {