@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
27 lines (26 loc) • 901 B
JavaScript
;
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;