Merge pull request #28801 from overleaf/dp-promisify-login-rate-limiter

Promisify LoginRateLimiter

GitOrigin-RevId: e7247258147635019fe229a6bc6aab3a6cc64f75
This commit is contained in:
David
2025-10-07 09:48:51 +01:00
committed by Copybot
parent abd3e6e325
commit 6715b0a6f8

View File

@@ -1,5 +1,5 @@
const { RateLimiter } = require('../../infrastructure/RateLimiter')
const { promisifyAll } = require('@overleaf/promise-utils')
const { callbackify } = require('@overleaf/promise-utils')
const Settings = require('@overleaf/settings')
const rateLimiterLoginEmail = new RateLimiter(
@@ -10,36 +10,32 @@ const rateLimiterLoginEmail = new RateLimiter(
}
)
function processLoginRequest(email, callback) {
rateLimiterLoginEmail
.consume(email.trim().toLowerCase(), 1, { method: 'email' })
.then(() => {
callback(null, true)
})
.catch(err => {
if (err instanceof Error) {
callback(err)
} else {
callback(null, false)
}
async function processLoginRequest(email) {
try {
await rateLimiterLoginEmail.consume(email.trim().toLowerCase(), 1, {
method: 'email',
})
return true
} catch (err) {
if (err instanceof Error) {
throw err
} else {
return false
}
}
}
function recordSuccessfulLogin(email, callback) {
rateLimiterLoginEmail
.delete(email)
.then(() => {
callback()
})
.catch(err => {
callback(err)
})
async function recordSuccessfulLogin(email) {
await rateLimiterLoginEmail.delete(email)
}
const LoginRateLimiter = {
processLoginRequest: callbackify(processLoginRequest),
recordSuccessfulLogin: callbackify(recordSuccessfulLogin),
}
LoginRateLimiter.promises = {
processLoginRequest,
recordSuccessfulLogin,
}
LoginRateLimiter.promises = promisifyAll(LoginRateLimiter)
module.exports = LoginRateLimiter