e30e75b5d4
Changesets / Create Version PR (push) Has been cancelled
Deploy Shadcn Registry / Deploy Production (push) Has been cancelled
Template Metrics / LOC + Bundle Size (push) Has been cancelled
Code Quality / Oxlint + Oxfmt (push) Has been cancelled
Code Quality / Template Sync (push) Has been cancelled
Code Quality / Build Changed Packages (push) Has been cancelled
Code Quality / Test Changed Packages (push) Has been cancelled
Deploy Expo Example / Deploy Production (push) Has been cancelled
Deploy Ink Example / Deploy Production (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.12) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.12) (push) Has been cancelled
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server";
|
|
import { NextResponse } from "next/server";
|
|
|
|
const isProtectedRoute = createRouteMatcher(["/chat(.*)", "/api(.*)"]);
|
|
|
|
/**
|
|
* Middleware that keeps the landing page (/) public but protects /chat and /api.
|
|
* If the user is not authenticated, redirect to the embedded /sign-in route,
|
|
* passing a redirect_url param so that after sign-in they return to the
|
|
* originally requested URL.
|
|
*/
|
|
export default clerkMiddleware(async (auth, req) => {
|
|
const { userId } = await auth();
|
|
|
|
if (isProtectedRoute(req) && !userId) {
|
|
const signInUrl = new URL("/sign-in", req.url);
|
|
signInUrl.searchParams.set("redirect_url", req.url);
|
|
return NextResponse.redirect(signInUrl);
|
|
}
|
|
|
|
return NextResponse.next();
|
|
});
|
|
|
|
export const config = {
|
|
matcher: [
|
|
// Skip Next.js internals and all static files, unless found in search params
|
|
"/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
|
|
// Always run for API routes
|
|
"/(api|trpc)(.*)",
|
|
],
|
|
};
|