diff --git a/src/test/user-test.js b/src/test/user-test.js index fe4a6736f..d9fa9858b 100644 --- a/src/test/user-test.js +++ b/src/test/user-test.js @@ -24,7 +24,7 @@ var async = require('async'), var USERNAME = 'noBody'; var USERNAME_NEW = 'noBodyNew'; -var EMAIL = 'noBody@no.body'; +var EMAIL = 'else@no.body'; var EMAIL_NEW = 'noBodyNew@no.body'; var PASSWORD = 'sTrOnG#$34134'; var NEW_PASSWORD = 'oTHER@#$235'; diff --git a/src/user.js b/src/user.js index 6fa32b695..b7afa4173 100644 --- a/src/user.js +++ b/src/user.js @@ -264,17 +264,26 @@ function verifyWithEmail(email, password, callback) { assert.strictEqual(typeof password, 'string'); assert.strictEqual(typeof callback, 'function'); - settings.getMailConfig(function (error, mailConfig) { - if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); - - if (mailConfig.enabled) return verifyWithUsername(email.split('@')[0], password, callback); - + function checkWithEmailFromDatabase() { userdb.getByEmail(email.toLowerCase(), function (error, user) { if (error && error.reason == DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND)); if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); verify(user.id, password, callback); }); + } + + settings.getMailConfig(function (error, mailConfig) { + if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); + + if (!mailConfig.enabled) return checkWithEmailFromDatabase(); + + verifyWithUsername(email.split('@')[0], password, function (error, result) { + if (!error) return callback(null, result); + if (error.reason !== UserError.NOT_FOUND) return callback(error); + + checkWithEmailFromDatabase(); + }); }); }