diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json index 29c6dc983b..a113ac03d8 100644 --- a/public/language/en_GB/user.json +++ b/public/language/en_GB/user.json @@ -5,6 +5,8 @@ "email": "Email", "confirm_email": "Confirm Email", + "delete_account": "Delete Account", + "delete_account_confirm": "Are you sure you want to delete your account?", "fullname": "Full Name", "website": "Website", diff --git a/public/src/forum/account/edit.js b/public/src/forum/account/edit.js index 0a9237c7af..d93ca01bbd 100644 --- a/public/src/forum/account/edit.js +++ b/public/src/forum/account/edit.js @@ -1,6 +1,6 @@ 'use strict'; -/* globals define, ajaxify, socket, app, config, utils, translator */ +/* globals define, ajaxify, socket, app, config, utils, translator, bootbox */ define('forum/account/edit', ['forum/account/header', 'uploader'], function(header, uploader) { var AccountEdit = {}, @@ -26,6 +26,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head currentEmail = $('#inputEmail').val(); handleImageChange(); + handleAccountDelete(); handleImageUpload(); handleEmailConfirm(); handlePasswordChange(); @@ -125,6 +126,24 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head }); } + function handleAccountDelete() { + $('#deleteAccountBtn').on('click', function() { + translator.translate('[[user:delete_account_confirm]]', function(translated) { + bootbox.confirm(translated, function(confirm) { + if (!confirm) { + return; + } + socket.emit('user.deleteAccount', {}, function(err) { + if (!err) { + app.logout(); + } + }); + }); + }); + return false; + }); + } + function handleImageUpload() { $('#upload-picture-modal').on('hide', function() { $('#userPhotoInput').val(''); diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 42adbb5981..d1e743d901 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -18,6 +18,12 @@ SocketUser.exists = function(socket, data, callback) { } }; +SocketUser.deleteAccount = function(socket, data, callback) { + if (socket.uid) { + user.deleteAccount(socket.uid, callback); + } +}; + SocketUser.count = function(socket, data, callback) { user.count(callback); }; diff --git a/src/topics.js b/src/topics.js index 596aab1929..7fcc065058 100644 --- a/src/topics.js +++ b/src/topics.js @@ -3,6 +3,7 @@ var async = require('async'), validator = require('validator'), + _ = require('underscore'), db = require('./database'), posts = require('./posts'), utils = require('../public/src/utils'), @@ -205,20 +206,12 @@ var async = require('async'), Topics.getTopicsTagsObjects(tids, next); } }, function(err, results) { - function arrayToObject(array, field) { - var obj = {}; - for (var i=0; i