@@ -2,6 +2,7 @@ import * as http from 'http';
22import express = require( 'express' ) ;
33import { APIGatewayProxyEvent , APIGatewayProxyResult } from 'aws-lambda' ;
44import * as log from 'loglevel' ;
5+ import rateLimit from 'express-rate-limit' ;
56
67import { getCorsResponseHeaders } from './cors' ;
78import { configureAppProxyTrust } from './trusted-xff-ip-setup' ;
@@ -86,6 +87,14 @@ apiRouter.use((req, _res, next) => {
8687 next ( ) ;
8788} ) ;
8889
90+ const RATE_LIMIT_PARAMS = {
91+ max : 10 ,
92+ windowMs : 60 * 60 * 1000 , // 1h window
93+ message : { error : 'Too many login attempts, please try again after 1 hour' } ,
94+ standardHeaders : true ,
95+ legacyHeaders : false
96+ } ;
97+
8998apiRouter . get ( '/get-prices' , lambdaWrapper ( 'get-prices' ) ) ;
9099apiRouter . get ( '/get-app-data' , lambdaWrapper ( 'get-app-data' ) ) ;
91100apiRouter . get ( '/get-billing-data' , lambdaWrapper ( 'get-billing-data' ) ) ;
@@ -96,9 +105,12 @@ apiRouter.post('/paypro-webhook', lambdaWrapper('paypro-webhook'));
96105apiRouter . get ( '/redirect-to-checkout' , lambdaWrapper ( 'redirect-to-checkout' ) ) ;
97106apiRouter . get ( '/redirect-paypro-to-thank-you' , lambdaWrapper ( 'redirect-paypro-to-thank-you' ) ) ;
98107
99- apiRouter . post ( '/auth/send-code' , lambdaWrapper ( 'auth/send-code' ) ) ;
100- apiRouter . post ( '/auth/login' , lambdaWrapper ( 'auth/login' ) ) ;
101- apiRouter . post ( '/auth/refresh-token' , lambdaWrapper ( 'auth/refresh-token' ) ) ;
108+ apiRouter . post ( '/auth/send-code' , rateLimit ( RATE_LIMIT_PARAMS ) , lambdaWrapper ( 'auth/send-code' ) ) ;
109+ apiRouter . post ( '/auth/login' ,
110+ rateLimit ( { ...RATE_LIMIT_PARAMS , skipSuccessfulRequests : true } ) , // Just limiting failed codes
111+ lambdaWrapper ( 'auth/login' )
112+ ) ;
113+ apiRouter . post ( '/auth/refresh-token' , rateLimit ( RATE_LIMIT_PARAMS ) , lambdaWrapper ( 'auth/refresh-token' ) ) ;
102114
103115apiRouter . post ( '/update-team' , lambdaWrapper ( 'update-team' ) ) ;
104116apiRouter . post ( '/update-team-size' , lambdaWrapper ( 'update-team-size' ) ) ;
0 commit comments