소스 검색

Rate-limit calls to invite api

Shane Kilkelly 10 년 전
부모
커밋
092c036406
1개의 변경된 파일과 17개의 추가작업 그리고 0개의 파일을 삭제
  1. 17 0
      services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee

+ 17 - 0
services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee

@@ -2,6 +2,7 @@ CollaboratorsController = require('./CollaboratorsController')
 AuthenticationController = require('../Authentication/AuthenticationController')
 AuthorizationMiddlewear = require('../Authorization/AuthorizationMiddlewear')
 CollaboratorsInviteController = require('./CollaboratorsInviteController')
+RateLimiterMiddlewear = require('../Security/RateLimiterMiddlewear')
 
 module.exports =
 	apply: (webRouter, apiRouter) ->
@@ -13,24 +14,40 @@ module.exports =
 		# invites
 		webRouter.post(
 			'/project/:Project_id/invite',
+			RateLimiterMiddlewear.rateLimit({
+				endpointName: "invite-to-project"
+				params: ["Project_id"]
+				maxRequests: 200
+				timeInterval: 60 * 10
+			}),
+			AuthenticationController.requireLogin(),
 			AuthorizationMiddlewear.ensureUserCanAdminProject,
 			CollaboratorsInviteController.inviteToProject
 		)
 
 		webRouter.get(
 			'/project/:Project_id/invite',
+			AuthenticationController.requireLogin(),
 			AuthorizationMiddlewear.ensureUserCanAdminProject,
 			CollaboratorsInviteController.getAllInvites
 		)
 
 		webRouter.delete(
 			'/project/:Project_id/invite/:invite_id',
+			AuthenticationController.requireLogin(),
 			AuthorizationMiddlewear.ensureUserCanAdminProject,
 			CollaboratorsInviteController.revokeInvite
 		)
 
 		webRouter.post(
 			'/project/:Project_id/invite/:invite_id/resend',
+			RateLimiterMiddlewear.rateLimit({
+				endpointName: "resend-invite"
+				params: ["Project_id"]
+				maxRequests: 200
+				timeInterval: 60 * 10
+			}),
+			AuthenticationController.requireLogin(),
 			AuthorizationMiddlewear.ensureUserCanAdminProject,
 			CollaboratorsInviteController.resendInvite
 		)