feat: Add zones for rate limiting by ip, user, session, global (#8508)

This commit is contained in:
Daniel
2023-06-09 21:27:56 +10:00
committed by GitHub
parent e2a7218f74
commit 03fba97e05
9 changed files with 161 additions and 3 deletions

View File

@@ -549,7 +549,22 @@ export const addRateLimit = (route, config, cloud) => {
}
return request.auth?.isMaster;
},
keyGenerator: request => {
keyGenerator: async request => {
if (route.zone === Parse.Server.RateLimitZone.global) {
return request.config.appId;
}
const token = request.info.sessionToken;
if (route.zone === Parse.Server.RateLimitZone.session && token) {
return token;
}
if (route.zone === Parse.Server.RateLimitZone.user && token) {
if (!request.auth) {
await new Promise(resolve => handleParseSession(request, null, resolve));
}
if (request.auth?.user?.id && request.zone === 'user') {
return request.auth.user.id;
}
}
return request.config.ip;
},
store: redisStore.store,