diff --git a/public/language/en_GB/login.json b/public/language/en_GB/login.json index f2090276a1..9f910e58e4 100644 --- a/public/language/en_GB/login.json +++ b/public/language/en_GB/login.json @@ -1,6 +1,6 @@ { "login": "Login", - "username": "Username", + "username": "Username / Email", "password": "Password", "remember_me": "Remember Me?", "forgot_password": "Forgot Password?", diff --git a/src/routes/authentication.js b/src/routes/authentication.js index 1b35d78d29..ad85141c75 100644 --- a/src/routes/authentication.js +++ b/src/routes/authentication.js @@ -134,8 +134,17 @@ } app.post('/logout', logout); - app.post('/login', login); app.post('/register', register); + app.post('/login', function(req, res, next) { + if (req.body.username && utils.isEmailValid(req.body.username)) { + user.getUsernameByEmail(req.body.username, function(err, username) { + req.body.username = username ? username : req.body.username; + login(req, res, next); + }); + } else { + login(req, res, next); + } + }); }); }); }; diff --git a/src/user.js b/src/user.js index 5249a9b4e0..6d72f43020 100644 --- a/src/user.js +++ b/src/user.js @@ -412,6 +412,12 @@ var bcrypt = require('bcryptjs'), db.getObjectField('email:uid', email, callback); }; + User.getUsernameByEmail = function(email, callback) { + db.getObjectField('email:uid', email, function(err, uid) { + User.getUserField(uid, 'username', callback); + }); + }; + User.isModerator = function(uid, cid, callback) { groups.isMemberByGroupName(uid, 'cid:' + cid + ':privileges:mods', callback); };