fix: login handler to handle if non-confirmed email is entered

This commit is contained in:
Julian Lam
2025-10-01 13:51:04 -04:00
parent 56a9336611
commit 5ed19ef8a9
2 changed files with 5 additions and 3 deletions

View File

@@ -262,6 +262,8 @@ authenticationController.login = async (req, res, next) => {
const username = await user.getUsernameByEmail(req.body.username); const username = await user.getUsernameByEmail(req.body.username);
if (username !== '[[global:guest]]') { if (username !== '[[global:guest]]') {
req.body.username = username; req.body.username = username;
} else {
return errorHandler(req, res, '[[error:invalid-email]]', 400);
} }
} }
if (isEmailLogin || isUsernameLogin) { if (isEmailLogin || isUsernameLogin) {

View File

@@ -5,8 +5,8 @@ const assert = require('assert');
const url = require('url'); const url = require('url');
const nconf = require('nconf'); const nconf = require('nconf');
const request = require('../src/request');
const db = require('./mocks/databasemock'); const db = require('./mocks/databasemock');
const request = require('../src/request');
const user = require('../src/user'); const user = require('../src/user');
const utils = require('../src/utils'); const utils = require('../src/utils');
const meta = require('../src/meta'); const meta = require('../src/meta');
@@ -52,8 +52,8 @@ describe('authentication', () => {
meta.config.allowLoginWith = 'username-email'; meta.config.allowLoginWith = 'username-email';
const uid = await user.create({ username: '2nduser', password: '2ndpassword', email: '2nduser@nodebb.org' }); const uid = await user.create({ username: '2nduser', password: '2ndpassword', email: '2nduser@nodebb.org' });
const { response, body } = await helpers.loginUser('2nduser@nodebb.org', '2ndpassword'); const { response, body } = await helpers.loginUser('2nduser@nodebb.org', '2ndpassword');
assert.strictEqual(response.statusCode, 403); assert.strictEqual(response.statusCode, 400);
assert.strictEqual(body, '[[error:invalid-login-credentials]]'); assert.strictEqual(body, '[[error:invalid-email]]');
meta.config.allowLoginWith = oldValue; meta.config.allowLoginWith = oldValue;
}); });