| 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(); | |
| } |