diff --git a/src/user.js b/src/user.js index 55d4837b2..0651ac522 100644 --- a/src/user.js +++ b/src/user.js @@ -34,6 +34,7 @@ var assert = require('assert'), groups = require('./groups.js'), GroupError = groups.GroupError, hat = require('hat'), + mailboxdb = require('./mailboxdb.js'), mailer = require('./mailer.js'), safe = require('safetydance'), tokendb = require('./tokendb.js'), @@ -261,15 +262,19 @@ function removeUser(userId, auditSource, callback) { if (config.isDemo() && user.username === constants.DEMO_USERNAME) return callback(new UserError(UserError.BAD_FIELD, 'Not allowed in demo mode')); - userdb.del(userId, function (error) { - if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND)); + mailboxdb.delByOwnerId(userId, function (error) { if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); - eventlog.add(eventlog.ACTION_USER_REMOVE, auditSource, { userId: userId }); + userdb.del(userId, function (error) { + if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND)); + if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); - callback(); + eventlog.add(eventlog.ACTION_USER_REMOVE, auditSource, { userId: userId }); - mailer.userRemoved(user); + callback(); + + mailer.userRemoved(user); + }); }); }); } diff --git a/src/userdb.js b/src/userdb.js index 50137f92f..79a48ca79 100644 --- a/src/userdb.js +++ b/src/userdb.js @@ -157,7 +157,6 @@ function del(userId, callback) { var queries = []; queries.push({ query: 'DELETE FROM groupMembers WHERE userId = ?', args: [ userId ] }); queries.push({ query: 'DELETE FROM users WHERE id = ?', args: [ userId ] }); - queries.push({ query: 'DELETE FROM mailboxes WHERE ownerId=?', args: [ userId ] }); database.transaction(queries, function (error, result) { if (error && error.code === 'ER_NO_REFERENCED_ROW_2') return callback(new DatabaseError(DatabaseError.NOT_FOUND, error));