kgroad-frontend2/src/middleware.ts

52 lines
1.1 KiB
TypeScript

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|.*\\..*).*)"],
};