Просмотр исходного кода

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

Promisify LoginRateLimiter

GitOrigin-RevId: e7247258147635019fe229a6bc6aab3a6cc64f75
David 1 год назад
Родитель
Сommit
6715b0a6f8
1 измененных файлов с 19 добавлено и 23 удалено
  1. 19 23
      services/web/app/src/Features/Security/LoginRateLimiter.js

+ 19 - 23
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