28 lines
796 B
TypeScript
28 lines
796 B
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import createMiddleware from 'next-intl/middleware'
|
|
import { auth } from '@/lib/auth'
|
|
import { routing } from '@/i18n/routing'
|
|
|
|
const intlMiddleware = createMiddleware(routing)
|
|
|
|
export const proxy = auth((request) => {
|
|
const isAuthOrAdmin = request.nextUrl.pathname.startsWith('/admin') || request.nextUrl.pathname.startsWith('/login')
|
|
|
|
if (request.nextUrl.pathname.startsWith('/admin')) {
|
|
const session = request.auth
|
|
if (!session || (session.user as any)?.role !== 'ADMIN') {
|
|
return NextResponse.redirect(new URL('/login', request.url))
|
|
}
|
|
}
|
|
|
|
if (isAuthOrAdmin) {
|
|
return NextResponse.next()
|
|
}
|
|
|
|
return intlMiddleware(request)
|
|
})
|
|
|
|
export const config = {
|
|
matcher: ['/((?!api|_next|_vercel|.*\\..*).*)']
|
|
}
|