|
1 | 1 | import { NextFunction, Request, Response, Router } from 'express'
|
| 2 | +import rateLimit from 'express-rate-limit' |
2 | 3 | import multer from 'multer'
|
3 | 4 | import { MulterRequest, TokenController } from '../controllers/token'
|
4 | 5 | import middlewares from '../middlewares'
|
5 | 6 |
|
6 | 7 | const router = Router()
|
7 | 8 | const upload = multer({ dest: 'uploads/' })
|
8 | 9 |
|
| 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 | + |
9 | 18 | router.post(
|
10 | 19 | '/claim',
|
11 | 20 | middlewares.authentication,
|
| 21 | + claimLimiter, |
12 | 22 | async (request, response, next) => {
|
13 | 23 | try {
|
14 | 24 | const controller = new TokenController()
|
@@ -123,6 +133,7 @@ router.post(
|
123 | 133 | router.post(
|
124 | 134 | '/partner',
|
125 | 135 | [middlewares.setHasPartnerAuth, middlewares.authentication],
|
| 136 | + claimLimiter, |
126 | 137 | async (_request: Request, response: Response, next: NextFunction) => {
|
127 | 138 | try {
|
128 | 139 | const controller = new TokenController()
|
|
0 commit comments