mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-24 13:01:56 +00:00
feat: Next.js middleware improved (#8295)
This commit is contained in:
+25
-7
@@ -2,15 +2,24 @@ import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
import { auth } from "@/auth.config";
|
||||
|
||||
const publicRoutes = [
|
||||
"/sign-in",
|
||||
"/sign-up",
|
||||
// In Cloud uncomment the following lines:
|
||||
// "/reset-password",
|
||||
// "/email-verification",
|
||||
// "/set-password",
|
||||
];
|
||||
|
||||
const isPublicRoute = (pathname: string): boolean => {
|
||||
return publicRoutes.some((route) => pathname.startsWith(route));
|
||||
};
|
||||
|
||||
export default auth((req: NextRequest & { auth: any }) => {
|
||||
const { pathname } = req.nextUrl;
|
||||
const user = req.auth?.user;
|
||||
|
||||
if (
|
||||
!user &&
|
||||
!pathname.includes("/sign-in") &&
|
||||
!pathname.includes("/sign-up")
|
||||
) {
|
||||
if (!user && !isPublicRoute(pathname)) {
|
||||
return NextResponse.redirect(new URL("/sign-in", req.url));
|
||||
}
|
||||
|
||||
@@ -26,6 +35,15 @@ export default auth((req: NextRequest & { auth: any }) => {
|
||||
});
|
||||
|
||||
export const config = {
|
||||
// https://nextjs.org/docs/app/building-your-application/routing/middleware#matcher
|
||||
matcher: ["/((?!api|_next/static|_next/image|.*\\.png$).*)"],
|
||||
matcher: [
|
||||
/*
|
||||
* Match all request paths except for the ones starting with:
|
||||
* - api (API routes)
|
||||
* - _next/static (static files)
|
||||
* - _next/image (image optimization files)
|
||||
* - favicon.ico (favicon file)
|
||||
* - *.png, *.jpg, *.jpeg, *.svg, *.ico (image files)
|
||||
*/
|
||||
"/((?!api|_next/static|_next/image|favicon.ico|.*\\.(?:png|jpg|jpeg|svg|ico|css|js)$).*)",
|
||||
],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user