diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js index 9956c659c6..f7682aae1c 100644 --- a/public/src/client/account/edit.js +++ b/public/src/client/account/edit.js @@ -169,10 +169,9 @@ define('forum/account/edit', ['forum/account/header', 'translator', 'components' confirmBtn.html(''); confirmBtn.prop('disabled', true); - socket.emit('user.checkPassword', { - uid: parseInt(ajaxify.data.uid, 10), + socket.emit('user.deleteAccount', { password: $('#confirm-password').val(), - }, function (err, ok) { + }, function (err) { function restoreButton() { translator.translate('[[modules:bootbox.confirm]]', function (confirmText) { confirmBtn.text(confirmText); @@ -183,19 +182,10 @@ define('forum/account/edit', ['forum/account/header', 'translator', 'components' if (err) { restoreButton(); return app.alertError(err.message); - } else if (!ok) { - restoreButton(); - return app.alertError('[[error:invalid-password]]'); } confirmBtn.html(''); - socket.emit('user.deleteAccount', {}, function (err) { - if (err) { - return app.alertError(err.message); - } - - window.location.href = config.relative_path + '/'; - }); + window.location.href = config.relative_path + '/'; }); return false; diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 2534b156b0..5401ccca44 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -36,6 +36,11 @@ SocketUser.deleteAccount = function (socket, data, callback) { } async.waterfall([ + function (next) { + user.isPasswordCorrect(socket.uid, data.password, function (err, ok) { + next(err || !ok ? new Error('[[error:invalid-password]]') : undefined); + }); + }, function (next) { user.isAdministrator(socket.uid, next); }, @@ -56,7 +61,15 @@ SocketUser.deleteAccount = function (socket, data, callback) { }); next(); }, - ], callback); + ], function (err) { + if (err) { + return setTimeout(function () { + callback(err); + }, 2500); + } + + callback(); + }); }; SocketUser.emailExists = function (socket, data, callback) {