E2E: make /sign-in catch-all and public in Clerk middleware
This commit is contained in:
@@ -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: [
|
||||||
|
|||||||
Reference in New Issue
Block a user