import { NextResponse, type NextRequest } from 'next/server'; import { getURL } from './lib/utils'; /** * Permet de créer un middleware Next.js qui sera exécuté avant chaque requête. * * @param req - La requête Next.js */ export async function middleware(req: NextRequest) { const res = NextResponse.next(); // on donne accès à l'API depuis n'importe quelle origine res.headers.set('Access-Control-Allow-Origin', '*'); res.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); const token = req.cookies.get('token')?.value; if (req.nextUrl.pathname.includes('dashboard') && !token) return NextResponse.redirect(getURL('/sign-in')); else if (req.nextUrl.pathname.includes('sign') && token) return NextResponse.redirect(getURL('/dashboard')); res.headers.set('Authorization', `Bearer ${token}`); return res; } export const config = { matcher: [ // On exclut les routes de l'API, les fichiers statiques, les images, les assets, le favicon et le service worker. '/((?!api|_next/static|_next/image|assets|favicon|sw.js).*)' ] };