diff --git a/app/(dashboard)/dashboard/page.tsx b/app/(protected)/dashboard/page.tsx similarity index 100% rename from app/(dashboard)/dashboard/page.tsx rename to app/(protected)/dashboard/page.tsx diff --git a/app/(dashboard)/formations/[moduleId]/MarkCompleteButton.tsx b/app/(protected)/formations/[moduleId]/MarkCompleteButton.tsx similarity index 100% rename from app/(dashboard)/formations/[moduleId]/MarkCompleteButton.tsx rename to app/(protected)/formations/[moduleId]/MarkCompleteButton.tsx diff --git a/app/(dashboard)/formations/[moduleId]/page.tsx b/app/(protected)/formations/[moduleId]/page.tsx similarity index 100% rename from app/(dashboard)/formations/[moduleId]/page.tsx rename to app/(protected)/formations/[moduleId]/page.tsx diff --git a/app/(dashboard)/formations/page.tsx b/app/(protected)/formations/page.tsx similarity index 100% rename from app/(dashboard)/formations/page.tsx rename to app/(protected)/formations/page.tsx diff --git a/app/(dashboard)/layout.tsx b/app/(protected)/layout.tsx similarity index 100% rename from app/(dashboard)/layout.tsx rename to app/(protected)/layout.tsx diff --git a/app/(dashboard)/profil/page.tsx b/app/(protected)/profil/page.tsx similarity index 100% rename from app/(dashboard)/profil/page.tsx rename to app/(protected)/profil/page.tsx diff --git a/app/(marketing)/candidature/page.tsx b/app/candidature/page.tsx similarity index 100% rename from app/(marketing)/candidature/page.tsx rename to app/candidature/page.tsx diff --git a/app/(auth)/login/page.tsx b/app/login/page.tsx similarity index 100% rename from app/(auth)/login/page.tsx rename to app/login/page.tsx diff --git a/app/(marketing)/merci/page.tsx b/app/merci/page.tsx similarity index 100% rename from app/(marketing)/merci/page.tsx rename to app/merci/page.tsx diff --git a/app/(marketing)/page.tsx b/app/page.tsx similarity index 100% rename from app/(marketing)/page.tsx rename to app/page.tsx diff --git a/app/(auth)/register/page.tsx b/app/register/page.tsx similarity index 100% rename from app/(auth)/register/page.tsx rename to app/register/page.tsx diff --git a/lib/supabase/middleware.ts b/lib/supabase/middleware.ts deleted file mode 100644 index 302fe87..0000000 --- a/lib/supabase/middleware.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { createServerClient } from "@supabase/ssr"; -import { NextResponse, type NextRequest } from "next/server"; - -// Middleware Supabase pour refresh des tokens auth -export async function updateSession(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(); - - // Rediriger vers login si pas connecté et route protégée - if ( - !user && - request.nextUrl.pathname.startsWith("/dashboard") - ) { - const url = request.nextUrl.clone(); - url.pathname = "/login"; - return NextResponse.redirect(url); - } - - // Rediriger vers dashboard si déjà connecté 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; -} diff --git a/middleware.ts b/middleware.ts deleted file mode 100644 index babfde2..0000000 --- a/middleware.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { createServerClient } from "@supabase/ssr"; -import { NextResponse, type NextRequest } from "next/server"; - -export async function middleware(request: NextRequest) { - // 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; - - 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(); - }, - 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(); - - // 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); - } - - // 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; - } catch (e) { - console.error("Middleware error:", e); - // En cas d'erreur, laisser passer la requete plutot que crasher - return NextResponse.next(); - } -} - -export const config = { - matcher: [ - "/dashboard/:path*", - "/formations/:path*", - "/profil/:path*", - "/login", - "/register", - ], -};