24 lines
733 B
TypeScript
24 lines
733 B
TypeScript
import { auth } from "@/auth"
|
|
import type { NextRequest } from "next/server"
|
|
import { NextResponse } from "next/server"
|
|
|
|
export async function middleware(request: NextRequest) {
|
|
const session = await auth()
|
|
|
|
const isProtectedPath =
|
|
!request.nextUrl.pathname.startsWith("/api/auth") &&
|
|
!request.nextUrl.pathname.startsWith("/_next") &&
|
|
!request.nextUrl.pathname.startsWith("/favicon") &&
|
|
!request.nextUrl.pathname.startsWith("/assets")
|
|
|
|
if (isProtectedPath && !session) {
|
|
const signInUrl = new URL("/api/auth/signin", request.url)
|
|
return NextResponse.redirect(signInUrl)
|
|
}
|
|
|
|
return NextResponse.next()
|
|
}
|
|
|
|
export const config = {
|
|
matcher: ["/((?!api/auth|_next/static|_next/image|favicon.ico).*)"],
|
|
} |