const rateLimit = require('express-rate-limit');

/**
 * Rate limiter cho endpoint đăng nhập / đăng ký
 * Max 10 request / 15 phút mỗi IP
 */
const authLimiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15 phút
    max: 10,
    standardHeaders: true,
    legacyHeaders: false,
    message: {
        success: false,
        message: 'Bạn đã thử quá nhiều lần. Vui lòng thử lại sau 15 phút.',
    },
    skipSuccessfulRequests: false,
});

/**
 * Rate limiter cho forgot password
 * Max 5 request / 60 phút mỗi IP (tránh spam email)
 */
const forgotPasswordLimiter = rateLimit({
    windowMs: 60 * 60 * 1000, // 1 giờ
    max: 5,
    standardHeaders: true,
    legacyHeaders: false,
    message: {
        success: false,
        message: 'Bạn đã gửi quá nhiều yêu cầu. Vui lòng thử lại sau 1 giờ.',
    },
});

/**
 * Rate limiter tổng quát cho API (anti-abuse)
 * Max 100 request / phút mỗi IP
 */
const generalLimiter = rateLimit({
    windowMs: 60 * 1000, // 1 phút
    max: 100,
    standardHeaders: true,
    legacyHeaders: false,
    message: {
        success: false,
        message: 'Quá nhiều request. Vui lòng thử lại sau.',
    },
});

module.exports = { authLimiter, forgotPasswordLimiter, generalLimiter };
