import createIntlMiddleware from 'next-intl/middleware';
import {
convexAuthNextjsMiddleware,
createRouteMatcher,
isAuthenticatedNextjs,
nextjsMiddlewareRedirect
} from "@convex-dev/auth/nextjs/server";
import { routing } from './i18n/routing';
const isPublicPage = createRouteMatcher(["/auth"]);
const intlMiddleware = createIntlMiddleware(routing);
export default async function middleware(request, event) {
// First, handle internationalization routing
const intlResponse = await intlMiddleware(request, event);
if (intlResponse) {
return intlResponse;
}
// Then, handle authentication routing
return convexAuthNextjsMiddleware((request, event) => {
if (!isPublicPage(request) && !isAuthenticatedNextjs()) {
return nextjsMiddlewareRedirect(request, "/auth");
}
if (isPublicPage(request) && isAuthenticatedNextjs()) {
return nextjsMiddlewareRedirect(request, "/");
}
})(request, event);
}
export const config = {
matcher: ["/((?!.*\\..*|_next).*)", "/", "/(api|trpc)(.*)", "/(pt-BR|en)/:path*"],
};
import createIntlMiddleware from 'next-intl/middleware';
import {
convexAuthNextjsMiddleware,
createRouteMatcher,
isAuthenticatedNextjs,
nextjsMiddlewareRedirect
} from "@convex-dev/auth/nextjs/server";
import { routing } from './i18n/routing';
const isPublicPage = createRouteMatcher(["/auth"]);
const intlMiddleware = createIntlMiddleware(routing);
export default async function middleware(request, event) {
// First, handle internationalization routing
const intlResponse = await intlMiddleware(request, event);
if (intlResponse) {
return intlResponse;
}
// Then, handle authentication routing
return convexAuthNextjsMiddleware((request, event) => {
if (!isPublicPage(request) && !isAuthenticatedNextjs()) {
return nextjsMiddlewareRedirect(request, "/auth");
}
if (isPublicPage(request) && isAuthenticatedNextjs()) {
return nextjsMiddlewareRedirect(request, "/");
}
})(request, event);
}
export const config = {
matcher: ["/((?!.*\\..*|_next).*)", "/", "/(api|trpc)(.*)", "/(pt-BR|en)/:path*"],
};