Skip to content

Commit 5c17636

Browse files
committed
feat: add rate limit to claim and partner
1 parent 5cb7291 commit 5c17636

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"csv-parser": "^3.0.0",
1919
"dotenv": "^10.0.0",
2020
"express": "^4.17.1",
21+
"express-rate-limit": "^7.4.0",
2122
"luxon": "^3.3.0",
2223
"mongoose": "^5.13.7",
2324
"morgan": "^1.10.0",

src/routes/token.ts

+11
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
import { NextFunction, Request, Response, Router } from 'express'
2+
import rateLimit from 'express-rate-limit'
23
import multer from 'multer'
34
import { MulterRequest, TokenController } from '../controllers/token'
45
import middlewares from '../middlewares'
56

67
const router = Router()
78
const upload = multer({ dest: 'uploads/' })
89

10+
const claimLimiter = rateLimit({
11+
windowMs: 1 * 60 * 1000, // 1 minute
12+
max: 20, // Limit each IP to 5 requests per windowMs
13+
message: 'Too many attempts, please try again later.',
14+
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
15+
legacyHeaders: false, // Disable the `X-RateLimit-*` headers
16+
})
17+
918
router.post(
1019
'/claim',
1120
middlewares.authentication,
21+
claimLimiter,
1222
async (request, response, next) => {
1323
try {
1424
const controller = new TokenController()
@@ -123,6 +133,7 @@ router.post(
123133
router.post(
124134
'/partner',
125135
[middlewares.setHasPartnerAuth, middlewares.authentication],
136+
claimLimiter,
126137
async (_request: Request, response: Response, next: NextFunction) => {
127138
try {
128139
const controller = new TokenController()

yarn.lock

+5
Original file line numberDiff line numberDiff line change
@@ -2165,6 +2165,11 @@ expect@^27.1.0:
21652165
jest-message-util "^27.1.0"
21662166
jest-regex-util "^27.0.6"
21672167

2168+
express-rate-limit@^7.4.0:
2169+
version "7.4.0"
2170+
resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.4.0.tgz#5db412b8de83fa07ddb40f610c585ac8c1dab988"
2171+
integrity sha512-v1204w3cXu5gCDmAvgvzI6qjzZzoMWKnyVDk3ACgfswTQLYiGen+r8w0VnXnGMmzEN/g8fwIQ4JrFFd4ZP6ssg==
2172+
21682173
express@^4.17.1:
21692174
version "4.17.1"
21702175
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"

0 commit comments

Comments
 (0)