feat: handle HTTP 429 as a response code

This commit is contained in:
Julian Lam
2021-01-07 14:05:23 -05:00
parent 56f929ed4f
commit 8bbb320867
2 changed files with 15 additions and 1 deletions

View File

@@ -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'; payload.status.message = message || 'HTTPS is required for requests to the write api, please re-send your request via HTTPS';
break; 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: case 500:
payload.status.code = 'internal-server-error'; payload.status.code = 'internal-server-error';
payload.status.message = message || payload.status.message; payload.status.message = message || payload.status.message;

View File

@@ -27,7 +27,16 @@ Utilities.login = (req, res) => {
const userslug = slugify(username); const userslug = slugify(username);
const uid = await user.getUidByUserslug(userslug); 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) { if (ok) {
const userData = await user.getUsers([uid], uid); const userData = await user.getUsers([uid], uid);