← back to Professional Directory

agents/web-agent/middleware.ts

24 lines

import { NextRequest, NextResponse } from 'next/server';

const BASIC_AUTH = process.env.BASIC_AUTH || 'admin:DWSecure2024!';
const EXPECTED = 'Basic ' + Buffer.from(BASIC_AUTH).toString('base64');

export function middleware(req: NextRequest) {
  const url = req.nextUrl.pathname;
  if (url === '/health' || url === '/healthz' || url.startsWith('/_next/') || url === '/favicon.ico') {
    return NextResponse.next();
  }
  const authHeader = req.headers.get('authorization');
  if (authHeader === EXPECTED) {
    return NextResponse.next();
  }
  return new NextResponse('auth required', {
    status: 401,
    headers: { 'WWW-Authenticate': 'Basic realm="mac2-pm2"' },
  });
}

export const config = {
  matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
};