UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

27 lines (26 loc) 901 B
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const rate_limiter_flexible_1 = require("rate-limiter-flexible"); const AppDatabase_1 = __importDefault(require("../modules/AppDatabase")); const { db } = AppDatabase_1.default; const rateLimiter = new rate_limiter_flexible_1.RateLimiterMongo({ storeClient: db, tableName: "auth-rate-limit", points: 5, duration: 60, blockDuration: 60 * 60 * 1, // 1 hour }); const authRateLimiterMiddleware = (req, res, next) => { rateLimiter .consume(`${req.ip}-${req.headers["user-agent"]}`) .then(() => { next(); }) .catch(() => { res.status(429).send("Too Many Requests"); }); }; exports.default = authRateLimiterMiddleware;