E2E: make /sign-in catch-all and public in Clerk middleware

This commit is contained in:
abhi1693
2026-02-07 19:30:21 +00:00
parent 52fcde5be8
commit a2627e36b0
2 changed files with 11 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
import { NextResponse } from "next/server"; import { NextResponse } from "next/server";
import { clerkMiddleware } from "@clerk/nextjs/server"; import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server";
import { isLikelyValidClerkPublishableKey } from "@/auth/clerkKey"; import { isLikelyValidClerkPublishableKey } from "@/auth/clerkKey";
@@ -8,7 +8,16 @@ const isClerkEnabled = () =>
process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY,
); );
export default isClerkEnabled() ? clerkMiddleware() : () => NextResponse.next(); // Public routes must include Clerk sign-in paths to avoid redirect loops.
const isPublicRoute = createRouteMatcher(["/sign-in(.*)"]);
export default isClerkEnabled()
? clerkMiddleware((auth, req) => {
if (isPublicRoute(req)) return NextResponse.next();
auth().protect();
return NextResponse.next();
})
: () => NextResponse.next();
export const config = { export const config = {
matcher: [ matcher: [