Spaces:
Sleeping
Sleeping
| 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, | |
| }; | |