28 lines
676 B
TypeScript
28 lines
676 B
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { decrypt } from '@/app/lib/auth';
|
|
|
|
export async function middleware(request: NextRequest) {
|
|
const session = request.cookies.get('session')?.value;
|
|
const { pathname } = request.nextUrl;
|
|
|
|
// Protect admin routes
|
|
if (pathname.startsWith('/admin')) {
|
|
if (!session) {
|
|
return NextResponse.redirect(new URL('/login', request.url));
|
|
}
|
|
|
|
try {
|
|
await decrypt(session);
|
|
return NextResponse.next();
|
|
} catch (e) {
|
|
return NextResponse.redirect(new URL('/login', request.url));
|
|
}
|
|
}
|
|
|
|
return NextResponse.next();
|
|
}
|
|
|
|
export const config = {
|
|
matcher: ['/admin/:path*'],
|
|
};
|