From 8bbb3208673a481950e997870f649e03860cefc8 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 7 Jan 2021 14:05:23 -0500 Subject: [PATCH] feat: handle HTTP 429 as a response code --- src/controllers/helpers.js | 5 +++++ src/controllers/write/utilities.js | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/controllers/helpers.js b/src/controllers/helpers.js index 517035f0f8..5cd77f4487 100644 --- a/src/controllers/helpers.js +++ b/src/controllers/helpers.js @@ -461,6 +461,11 @@ helpers.generateError = (statusCode, message) => { payload.status.message = message || 'HTTPS is required for requests to the write api, please re-send your request via HTTPS'; break; + case 429: + payload.status.code = 'too-many-requests'; + payload.status.message = message || 'You have made too many requests, please try again later'; + break; + case 500: payload.status.code = 'internal-server-error'; payload.status.message = message || payload.status.message; diff --git a/src/controllers/write/utilities.js b/src/controllers/write/utilities.js index fe6dbf78a3..35a7b74275 100644 --- a/src/controllers/write/utilities.js +++ b/src/controllers/write/utilities.js @@ -27,7 +27,16 @@ Utilities.login = (req, res) => { const userslug = slugify(username); const uid = await user.getUidByUserslug(userslug); - const ok = await user.isPasswordCorrect(uid, password, req.ip); + let ok = false; + try { + ok = await user.isPasswordCorrect(uid, password, req.ip); + } catch (err) { + if (err.message === '[[error:account-locked]]') { + helpers.formatApiResponse(429, res, err); + } else { + helpers.formatApiResponse(500, res, err); + } + } if (ok) { const userData = await user.getUsers([uid], uid);