From 6715b0a6f8995179a949aee6ca7c2dade80ec40f Mon Sep 17 00:00:00 2001 From: David <33458145+davidmcpowell@users.noreply.github.com> Date: Tue, 7 Oct 2025 09:48:51 +0100 Subject: [PATCH] Merge pull request #28801 from overleaf/dp-promisify-login-rate-limiter Promisify LoginRateLimiter GitOrigin-RevId: e7247258147635019fe229a6bc6aab3a6cc64f75 --- .../src/Features/Security/LoginRateLimiter.js | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/services/web/app/src/Features/Security/LoginRateLimiter.js b/services/web/app/src/Features/Security/LoginRateLimiter.js index 58a351d20a..bab5193632 100644 --- a/services/web/app/src/Features/Security/LoginRateLimiter.js +++ b/services/web/app/src/Features/Security/LoginRateLimiter.js @@ -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