Spaces:
Configuration error
Configuration error
import rateLimit from 'express-rate-limit' | |
// General rate limiter | |
export const rateLimiter = rateLimit({ | |
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000'), // 15 minutes | |
max: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS || '100'), // limit each IP to 100 requests per windowMs | |
message: { | |
success: false, | |
error: 'Too many requests, please try again later', | |
code: 'RATE_LIMIT_EXCEEDED' | |
}, | |
standardHeaders: true, | |
legacyHeaders: false, | |
}) | |
// Strict rate limiter for auth endpoints | |
export const authRateLimiter = rateLimit({ | |
windowMs: 15 * 60 * 1000, // 15 minutes | |
max: 5, // limit each IP to 5 requests per windowMs | |
message: { | |
success: false, | |
error: 'Too many authentication attempts, please try again later', | |
code: 'AUTH_RATE_LIMIT_EXCEEDED' | |
}, | |
standardHeaders: true, | |
legacyHeaders: false, | |
}) | |
// Message rate limiter | |
export const messageRateLimiter = rateLimit({ | |
windowMs: 60 * 1000, // 1 minute | |
max: 30, // limit each IP to 30 messages per minute | |
message: { | |
success: false, | |
error: 'Too many messages, please slow down', | |
code: 'MESSAGE_RATE_LIMIT_EXCEEDED' | |
}, | |
standardHeaders: true, | |
legacyHeaders: false, | |
}) | |
// File upload rate limiter | |
export const uploadRateLimiter = rateLimit({ | |
windowMs: 15 * 60 * 1000, // 15 minutes | |
max: 10, // limit each IP to 10 uploads per 15 minutes | |
message: { | |
success: false, | |
error: 'Too many file uploads, please try again later', | |
code: 'UPLOAD_RATE_LIMIT_EXCEEDED' | |
}, | |
standardHeaders: true, | |
legacyHeaders: false, | |
}) | |