const rateLimit = new Map();
export function middleware(request) {
const userIP = request.ip || request.headers.get('x-forwarded-for');
const currentTime = Date.now();
if (rateLimit.has(userIP)) {
const { lastRequestTime, requestCount } = rateLimit.get(userIP);
if (currentTime - lastRequestTime < 60000) { // 1 minute window
if (requestCount >= 5) {
return new NextResponse('Too many requests', { status: 429 });
}
rateLimit.set(userIP, { lastRequestTime, requestCount: requestCount + 1 });
} else {
rateLimit.set(userIP, { lastRequestTime: currentTime, requestCount: 1 });
}
} else {
rateLimit.set(userIP, { lastRequestTime: currentTime, requestCount: 1 });
}
return NextResponse.next();
}