const RateLimiter = require('../../infrastructure/RateLimiter') const { promisifyAll } = require('../../util/promises') const ONE_MIN = 60 const ATTEMPT_LIMIT = 10 function processLoginRequest(email, callback) { const opts = { endpointName: 'login', throttle: ATTEMPT_LIMIT, timeInterval: ONE_MIN * 2, subjectName: email } RateLimiter.addCount(opts, (err, shouldAllow) => callback(err, shouldAllow)) } function recordSuccessfulLogin(email, callback) { if (callback == null) { callback = function() {} } RateLimiter.clearRateLimit('login', email, callback) } const LoginRateLimiter = { processLoginRequest, recordSuccessfulLogin } LoginRateLimiter.promises = promisifyAll(LoginRateLimiter) module.exports = LoginRateLimiter