nest-trpc-prisma-starter/apps/web/middleware.ts
2024-04-26 02:12:44 +08:00

46 lines
947 B
TypeScript

import { auth } from "~/auth"
const publicRoutes: string[] = [
// '/',
]
const authRoutes = [
// '/auth/signup',
'/auth/signin'
]
export const apiAuthPrefix = "/auth";
export default auth((req) => {
const { nextUrl } = req
const isLoggedIn = !!req.auth;
const isPublicRoute = publicRoutes.includes(nextUrl.pathname);
const isAuthRoute = authRoutes.includes(nextUrl.pathname);
const isApiAuthRoute = nextUrl.pathname.startsWith(apiAuthPrefix);
if (isApiAuthRoute) {
return;
}
if (isAuthRoute) {
if (isLoggedIn) {
return Response.redirect(new URL('/', nextUrl));
}
return null;
}
if (!isLoggedIn && !isPublicRoute) {
return Response.redirect(new URL("/auth/signin", nextUrl));
}
return null
})
// Read more: https://nextjs.org/docs/app/building-your-application/routing/middleware#matcher
export const config = {
matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"],
}