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) {