tinfo-web-server / middleware /securityRateLimit.js
Faridaqurr
initial backend
e8c33fa
Raw
History Blame Contribute Delete
1.04 kB
const rateLimit = require('express-rate-limit');
const { env } = require('../configs/env');
const createLimiter = ({ windowMs, max, message }) =>
rateLimit({
windowMs,
max,
standardHeaders: true,
legacyHeaders: false,
message,
});
const globalLimiter = createLimiter({
windowMs: env.globalRateWindowMs,
max: env.globalRateMax,
message: 'Too many requests, please slow down.',
});
const adminApiLimiter = createLimiter({
windowMs: env.adminApiRateWindowMs,
max: env.adminApiRateMax,
message: 'Too many admin API requests. Please wait a moment.',
});
const loginLimiter = createLimiter({
windowMs: env.loginRateWindowMs,
max: env.loginRateMax,
message: { message: 'Too many login attempts. Try again in 15 minutes.' },
});
const clientEventLimiter = createLimiter({
windowMs: env.clientEventRateWindowMs,
max: env.clientEventRateMax,
message: 'Too many analytics events. Please slow down.',
});
module.exports = {
globalLimiter,
adminApiLimiter,
loginLimiter,
clientEventLimiter,
};