From b75e8a1d103eb61f97b9212be0da15e8fec1a678 Mon Sep 17 00:00:00 2001 From: derrickmehaffy Date: Fri, 16 Dec 2022 10:42:28 -0700 Subject: [PATCH] implement config option to disable ratelimit --- .../admin/server/middlewares/rateLimit.js | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/core/admin/server/middlewares/rateLimit.js b/packages/core/admin/server/middlewares/rateLimit.js index 24c919c3a8..d4cb61c494 100644 --- a/packages/core/admin/server/middlewares/rateLimit.js +++ b/packages/core/admin/server/middlewares/rateLimit.js @@ -8,18 +8,30 @@ const { RateLimitError } = utils.errors; module.exports = (config, { strapi }) => async (ctx, next) => { - const ratelimit = require('koa2-ratelimit').RateLimit; + let ratelimitConfig = strapi.config.get('admin.ratelimit'); - const userEmail = toLower(ctx.request.body.email) || 'unknownEmail'; + if (!ratelimitConfig || !ratelimitConfig.enabled) { + ratelimitConfig = { + enabled: true, + }; + } - return ratelimit.middleware({ - interval: { min: 5 }, - max: 5, - prefixKey: `${userEmail}:${ctx.request.path}:${ctx.request.ip}`, - handler() { - throw new RateLimitError(); - }, - ...strapi.config.get('admin.ratelimit'), - ...config, - })(ctx, next); + if (ratelimitConfig.enabled === true) { + const ratelimit = require('koa2-ratelimit').RateLimit; + + const userEmail = toLower(ctx.request.body.email) || 'unknownEmail'; + + return ratelimit.middleware({ + interval: { min: 5 }, + max: 5, + prefixKey: `${userEmail}:${ctx.request.path}:${ctx.request.ip}`, + handler() { + throw new RateLimitError(); + }, + ...ratelimitConfig, + ...config, + })(ctx, next); + } + + return next(); };