diff --git a/public/src/forum/accountedit.js b/public/src/forum/accountedit.js index a08ad5a945..ab2c6cf16b 100644 --- a/public/src/forum/accountedit.js +++ b/public/src/forum/accountedit.js @@ -119,7 +119,7 @@ $(document).ready(function() { gravatarPicture = data.gravatarpicture; } } else { - app.alertError('There was an error updating your profile!'); + app.alertError('There was an error updating your profile! ' + err.error); } }); return false; @@ -222,50 +222,59 @@ $(document).ready(function() { function onPasswordChanged() { passwordvalid = utils.isPasswordValid(password.val()); - if (password.val().length < 6) { + if (password.val().length < config.minimumPasswordLength) { password_notify.html('Password too short'); - password_notify.attr('class', 'label label-danger'); + password_notify.attr('class', 'alert alert-danger'); + password_notify.removeClass('hide'); } else if(!passwordvalid) { password_notify.html('Invalid password'); - password_notify.attr('class', 'label label-danger'); + password_notify.attr('class', 'alert alert-danger'); + password_notify.removeClass('hide'); } else { password_notify.html('OK!'); - password_notify.attr('class', 'label label-success'); + password_notify.attr('class', 'alert alert-success'); + password_notify.removeClass('hide'); } onPasswordConfirmChanged(); } function onPasswordConfirmChanged() { + if(password_notify.hasClass('alert-danger') || !password_confirm.val()) { + password_confirm_notify.addClass('hide'); + return; + } if(password.val() !== password_confirm.val()) { password_confirm_notify.html('Passwords must match!'); - password_confirm_notify.attr('class', 'label label-danger'); + password_confirm_notify.attr('class', 'alert alert-danger'); + password_confirm_notify.removeClass('hide'); passwordsmatch = false; } else { password_confirm_notify.html('OK!'); - password_confirm_notify.attr('class', 'label label-success'); + password_confirm_notify.attr('class', 'alert alert-success'); + password_confirm_notify.removeClass('hide'); passwordsmatch = true; } } - password.on('keyup', onPasswordChanged); - password_confirm.on('keyup', onPasswordConfirmChanged); + password.on('blur', onPasswordChanged); + password_confirm.on('blur', onPasswordConfirmChanged); $('#changePasswordBtn').on('click', function() { if(passwordvalid && passwordsmatch && currentPassword.val()) { - socket.emit('api:user.changePassword', {'currentPassword': currentPassword.val(),'newPassword': password.val() }, function(data) { + socket.emit('api:user.changePassword', {'currentPassword': currentPassword.val(),'newPassword': password.val() }, function(err) { currentPassword.val(''); password.val(''); password_confirm.val(''); - password_notify.html(''); - password_confirm_notify.html(''); + password_notify.addClass('hide'); + password_confirm_notify.addClass('hide'); passwordsmatch = false; passwordvalid = false; - if(data.err) { - app.alertError(data.err); + if(err) { + app.alertError(err.error); return; } diff --git a/public/templates/accountedit.tpl b/public/templates/accountedit.tpl index 7b727c2368..c551109092 100644 --- a/public/templates/accountedit.tpl +++ b/public/templates/accountedit.tpl @@ -149,17 +149,19 @@
- + +
-
+ +
- +
Change Password
diff --git a/src/user.js b/src/user.js index 76153692b9..ff61bc9540 100644 --- a/src/user.js +++ b/src/user.js @@ -37,7 +37,9 @@ var utils = require('./../public/src/utils.js'), }, function(next) { if (email !== undefined) { - User.isEmailAvailable(email, function(available) { + User.isEmailAvailable(email, function(err, available) { + if(err) + return next(err); next(!available ? new Error('Email taken!') : null); }); } else next(); @@ -209,7 +211,9 @@ var utils = require('./../public/src/utils.js'), User.getUserField(uid, 'email', function(err, email) { if(email !== data['email']) { - User.isEmailAvailable(data['email'], function(available) { + User.isEmailAvailable(data['email'], function(err, available) { + if(err) + return next(err, null); if(!available) { next({error:'Email not available!'}, false); } else { @@ -272,38 +276,30 @@ var utils = require('./../public/src/utils.js'), User.isEmailAvailable = function(email, callback) { RDB.exists('email:' + email + ':uid' , function(err, exists) { - if(!err) { - callback(exists !== 1); - return; - } else { - console.log(err); - callback(false); - } + callback(err, !!exists); }); } User.changePassword = function(uid, data, callback) { if(!utils.isPasswordValid(data.newPassword)) { - callback({err:'Invalid password!'}); - return; + return callback({error:'Invalid password!'}); } User.getUserField(uid, 'password', function(err, user_password) { bcrypt.compare(data.currentPassword, user_password, function(err, res) { if(err) { - console.log(err); - callback({err:'bcrpyt compare error!'}); - return; + return callback(err); } if (res) { User.hashPassword(data.newPassword, function(err, hash) { User.setUserField(uid, 'password', hash); - callback({err:null}); + callback(null); }); } else { - callback({err:'Your current password is not correct!'}); + console.log('gg'); + callback({error:'Your current password is not correct!'}); } }); });