import { withAuth } from "next-auth/middleware"; import createIntlMiddleware from "next-intl/middleware"; import { NextRequest } from "next/server"; import { locales, localePrefix } from "./shared/config/navigation"; const privatePages = [ "/profile", "/profile/personal", "/profile/my-reports", "/create-report", ]; const intlMiddleware = createIntlMiddleware({ locales, localePrefix, defaultLocale: "ru", }); const authMiddleware = withAuth( function onSuccess(req) { return intlMiddleware(req); }, { callbacks: { authorized: ({ token }) => token != null, }, pages: { signIn: "/sign-in", }, } ); export default function middleware(req: NextRequest) { const publicPathnameRegex = RegExp( `^(/(${locales.join("|")}))?(${privatePages .flatMap((p) => (p === "/" ? ["", "/"] : p)) .join("|")})/?$`, "i" ); const isPublicPage = publicPathnameRegex.test(req.nextUrl.pathname); if (!isPublicPage) { return intlMiddleware(req); } else { return (authMiddleware as any)(req); } } export const config = { matcher: ["/((?!api|_next|.*\\..*).*)"], };