refactor: add protected route prefixes and update admin path in middleware

This commit is contained in:
Firman Ramdhani
2026-10-01 13:20:51 +07:00
parent 5b71752014
commit da9fdc25c4
+7 -4
View File
@@ -2,14 +2,17 @@ import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server' import type { NextRequest } from 'next/server'
import { decrypt } from '@/lib/auth' import { decrypt } from '@/lib/auth'
const protectedRoutes = ['/', '/my-orders', '/my-purchases', '/reports', '/profile', '/users'] const protectedRoutes = ['/', '/my-orders', '/my-purchases', '/reports', '/profile', '/users', '/balances']
const protectedPrefixes = ['/my-orders/', '/order/', '/settings/']
const publicRoutes = ['/login', '/register'] const publicRoutes = ['/login', '/register']
export async function middleware(request: NextRequest) { export async function middleware(request: NextRequest) {
const path = request.nextUrl.pathname const path = request.nextUrl.pathname
// Also protect dynamic routes like /my-orders/[id] const isProtectedRoute =
const isProtectedRoute = protectedRoutes.includes(path) || path.startsWith('/my-orders/') protectedRoutes.includes(path) ||
protectedPrefixes.some(prefix => path.startsWith(prefix))
const isPublicRoute = publicRoutes.includes(path) const isPublicRoute = publicRoutes.includes(path)
const cookie = request.cookies.get('session')?.value const cookie = request.cookies.get('session')?.value
@@ -23,7 +26,7 @@ export async function middleware(request: NextRequest) {
return NextResponse.redirect(new URL('/', request.nextUrl)) return NextResponse.redirect(new URL('/', request.nextUrl))
} }
if (path.startsWith('/users') && session?.role !== 'superadmin') { if (path.startsWith('/settings') && session?.role !== 'superadmin') {
return NextResponse.redirect(new URL('/', request.nextUrl)) return NextResponse.redirect(new URL('/', request.nextUrl))
} }