From 7e532f87523fe4da63489fb753941ceab91b6309 Mon Sep 17 00:00:00 2001 From: Dmitri Date: Tue, 31 Mar 2026 13:12:59 +0400 Subject: [PATCH] updated trottler --- backend/src/middlewares/rateLimiter.js | 7 ++++--- frontend/src/pages/projects/projects-edit.tsx | 10 ++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/backend/src/middlewares/rateLimiter.js b/backend/src/middlewares/rateLimiter.js index dceb09b..c6d185f 100644 --- a/backend/src/middlewares/rateLimiter.js +++ b/backend/src/middlewares/rateLimiter.js @@ -210,14 +210,15 @@ const apiLimiter = createRateLimiter({ }); /** - * Upload limiter - Stricter limits for file uploads - * 10 uploads per minute per IP + * Upload limiter - Limits for file uploads + * 200 uploads per minute per IP (supports batch uploads of 100+ files) */ const uploadLimiter = createRateLimiter({ keyPrefix: 'upload', windowMs: 60 * 1000, // 1 minute - max: 10, + max: 200, message: 'Too many file uploads. Please wait before uploading more.', + skipFailedRequests: true, // Don't penalize for failed uploads }); /** diff --git a/frontend/src/pages/projects/projects-edit.tsx b/frontend/src/pages/projects/projects-edit.tsx index b287603..d073f8f 100644 --- a/frontend/src/pages/projects/projects-edit.tsx +++ b/frontend/src/pages/projects/projects-edit.tsx @@ -151,10 +151,12 @@ const EditProjectsPage = () => { position: 'bottom-center', }); } catch (error: unknown) { - const errorMessage = - error && typeof error === 'object' && 'message' in error - ? String((error as { message: string }).message) - : 'Failed to save project settings'; + let errorMessage = 'Failed to save project settings'; + if (typeof error === 'string') { + errorMessage = error; + } else if (error && typeof error === 'object' && 'message' in error) { + errorMessage = String((error as { message: string }).message); + } toast(errorMessage, { type: 'error', position: 'bottom-center',