feat: added daily limit feature
This commit is contained in:
28
src/middlewares/limitCheck.middleware.js
Normal file
28
src/middlewares/limitCheck.middleware.js
Normal file
@@ -0,0 +1,28 @@
|
||||
const { logger } = require('../util/logger');
|
||||
const {
|
||||
getDailyLimit,
|
||||
getUsedLimit,
|
||||
} = require('../services/paymentLimit.service');
|
||||
|
||||
async function checkLimit(req, res, next) {
|
||||
const { amount } = req.body;
|
||||
const { user, client } = req;
|
||||
const dailyLimit = await getDailyLimit(user, client);
|
||||
const usedLimit = await getUsedLimit(user, client);
|
||||
|
||||
const remainingLimit = dailyLimit - usedLimit;
|
||||
|
||||
logger.info(
|
||||
`dailyLimit = ${dailyLimit} | usedLimit = ${usedLimit} | remainingLimit = ${remainingLimit}`
|
||||
);
|
||||
|
||||
if (amount > remainingLimit) {
|
||||
const midnight = new Date();
|
||||
midnight.setHours(24, 0, 0, 0);
|
||||
res.set('Retry-After', midnight.toUTCString());
|
||||
return res.status(403).json({ error: 'Daily limit exhausted' });
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
module.exports = { checkLimit };
|
||||
Reference in New Issue
Block a user