mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
refactor: remove waterfall
This commit is contained in:
@@ -248,31 +248,29 @@ authenticationController.login = async (req, res, next) => {
|
|||||||
|
|
||||||
const loginWith = meta.config.allowLoginWith || 'username-email';
|
const loginWith = meta.config.allowLoginWith || 'username-email';
|
||||||
req.body.username = req.body.username.trim();
|
req.body.username = req.body.username.trim();
|
||||||
|
const errorHandler = res.locals.noScriptErrors || helpers.noScriptErrors;
|
||||||
plugins.hooks.fire('filter:login.check', { req: req, res: res, userData: req.body }, (err) => {
|
try {
|
||||||
if (err) {
|
await plugins.hooks.fire('filter:login.check', { req: req, res: res, userData: req.body });
|
||||||
return (res.locals.noScriptErrors || helpers.noScriptErrors)(req, res, err.message, 403);
|
} catch (err) {
|
||||||
|
return errorHandler(req, res, err.message, 403);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const isEmailLogin = loginWith.includes('email') && req.body.username && utils.isEmailValid(req.body.username);
|
||||||
|
const isUsernameLogin = loginWith.includes('username') && !validator.isEmail(req.body.username);
|
||||||
|
if (isEmailLogin) {
|
||||||
|
const username = await user.getUsernameByEmail(req.body.username);
|
||||||
|
if (username !== '[[global:guest]]') {
|
||||||
|
req.body.username = username;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (req.body.username && utils.isEmailValid(req.body.username) && loginWith.includes('email')) {
|
if (isEmailLogin || isUsernameLogin) {
|
||||||
async.waterfall([
|
|
||||||
function (next) {
|
|
||||||
user.getUsernameByEmail(req.body.username, next);
|
|
||||||
},
|
|
||||||
function (username, next) {
|
|
||||||
if (username !== '[[global:guest]]') {
|
|
||||||
req.body.username = username;
|
|
||||||
}
|
|
||||||
|
|
||||||
(res.locals.continueLogin || continueLogin)(strategy, req, res, next);
|
|
||||||
},
|
|
||||||
], next);
|
|
||||||
} else if (loginWith.includes('username') && !validator.isEmail(req.body.username)) {
|
|
||||||
(res.locals.continueLogin || continueLogin)(strategy, req, res, next);
|
(res.locals.continueLogin || continueLogin)(strategy, req, res, next);
|
||||||
} else {
|
} else {
|
||||||
err = `[[error:wrong-login-type-${loginWith}]]`;
|
errorHandler(req, res, `[[error:wrong-login-type-${loginWith}]]`, 400);
|
||||||
(res.locals.noScriptErrors || helpers.noScriptErrors)(req, res, err, 400);
|
|
||||||
}
|
}
|
||||||
});
|
} catch (err) {
|
||||||
|
return errorHandler(req, res, err.message, 500);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function continueLogin(strategy, req, res, next) {
|
function continueLogin(strategy, req, res, next) {
|
||||||
|
|||||||
Reference in New Issue
Block a user