feat: transfer admin check to middleware and add vertical padding

This commit is contained in:
2026-04-27 23:47:24 +08:00
parent 647a26db94
commit f35b6aee1e
5 changed files with 793 additions and 651 deletions
+13 -1
View File
@@ -9,11 +9,14 @@ const authRoutes = [
"/reset-password",
]
const adminRoutes = ["/admin"]
export async function proxy(req: NextRequest) {
const path = req.nextUrl.pathname
const isAuthRoute = authRoutes.some((route) => path.startsWith(route))
const isAdminRoute = adminRoutes.some((route) => path.startsWith(route))
if (!isAuthRoute) {
if (!isAuthRoute && !isAdminRoute) {
return NextResponse.next()
}
@@ -33,6 +36,15 @@ export async function proxy(req: NextRequest) {
headers: req.headers,
})
// Admin routes: require an admin session
if (isAdminRoute) {
if (!session || session.user.role !== "admin") {
return NextResponse.redirect(new URL("/", req.url))
}
return NextResponse.next()
}
// Auth routes: redirect authenticated users away
if (session) {
return NextResponse.redirect(new URL("/", req.url))
}