forked from MyZubster-Ecosystem/myzubster
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrateLimitMiddleware.js
More file actions
48 lines (42 loc) 路 1.43 KB
/
Copy pathrateLimitMiddleware.js
File metadata and controls
48 lines (42 loc) 路 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const rateLimit = require('express-rate-limit');
// General API rate limiter - 100 requests per 15 minutes per IP
const apiLimiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100,
standardHeaders: true,
legacyHeaders: false,
message: { error: 'Too many requests from this IP, please try again later.' }
});
// Auth endpoints rate limiter - 5 attempts per 15 minutes (prevent brute force)
const authLimiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 5,
standardHeaders: true,
legacyHeaders: false,
message: { error: 'Too many authentication attempts, please try again later.' }
});
// Payment endpoints rate limiter - 20 requests per hour (prevent abuse)
const paymentLimiter = rateLimit({
windowMs: 60 * 60 * 1000,
max: 20,
standardHeaders: true,
legacyHeaders: false,
message: { error: 'Too many payment requests, please try again later.' }
});
// Write endpoints rate limiter - 30 requests per 10 minutes
const writeLimiter = rateLimit({
windowMs: 10 * 60 * 1000,
max: 30,
standardHeaders: true,
legacyHeaders: false,
message: { error: 'Too many write operations, please slow down.' }
});
// Admin endpoints rate limiter - 10 requests per 5 minutes
const adminLimiter = rateLimit({
windowMs: 5 * 60 * 1000,
max: 10,
standardHeaders: true,
legacyHeaders: false,
message: { error: 'Too many admin requests.' }
});
module.exports = { apiLimiter, authLimiter, paymentLimiter, writeLimiter, adminLimiter };