diff --git a/src/controllers/api/v1/users.js b/src/controllers/api/v1/users.js index a8993665e..cc8cb44ce 100644 --- a/src/controllers/api/v1/users.js +++ b/src/controllers/api/v1/users.js @@ -373,14 +373,19 @@ api_users.updatePreferences = function(req, res) { api_users.deleteUser = function(req, res) { var username = req.params.username; - if(_.isUndefined(username)) return res.status(400).json({error: 'Invalid Request'}); + if(_.isUndefined(username) || _.isNull(username)) return res.status(400).json({error: 'Invalid Request'}); async.waterfall([ function(cb) { userSchema.getUserByUsername(username, function(err, user) { if (err) return cb(err); - cb(null, user); + if (_.isNull(user)) { + console.log(username + ' was null'); + return cb({message: 'Invalid User'}); + } + + return cb(null, user); }) }, function(user, cb) { @@ -388,7 +393,7 @@ api_users.deleteUser = function(req, res) { ticketSchema.getTicketsByRequester(user._id, function(err, tickets) { if (err) return cb(err); - var hasTickets = tickets.length > 0; + var hasTickets = _.size(tickets) > 0; return cb(null, hasTickets, user); }); }, diff --git a/src/models/user.js b/src/models/user.js index dc22bdee4..f34525457 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -205,7 +205,7 @@ userSchema.statics.getUserByUsername = function(user, callback) { return callback("Invalid Username - UserSchema.GetUserByUsername()", null); } - return this.model(COLLECTION).findOne({username: new RegExp("^" + user.toLowerCase(), 'i') }, callback); + return this.model(COLLECTION).findOne({username: new RegExp("^" + user + "$", 'i') }, callback); }; /** diff --git a/src/public/js/angularjs/controllers/accounts.js b/src/public/js/angularjs/controllers/accounts.js index 1be418ed3..49c8ebae0 100644 --- a/src/public/js/angularjs/controllers/accounts.js +++ b/src/public/js/angularjs/controllers/accounts.js @@ -53,24 +53,27 @@ define(['angular', 'underscore', 'jquery', 'modules/helpers', 'uikit', 'history' }); }; + var running = false; $scope.deleteAccount = function($event) { + if (running) + return true; + $event.preventDefault(); var self = $($event.target); var username = self.attr('data-username'); if (_.isUndefined(username)) return true; + running = true; $http.delete( '/api/v1/users/' + username ).success(function(data) { if (!data.success) { helpers.UI.showSnackbar(data.error, true); - return; + running = false; + return true; } - //self.parents('[data-uk-filter]').remove(); - //UIkit.$html.trigger('changed.uk.dom'); - if (data.disabled) { self.parents('.tru-card-head').addClass('tru-card-head-deleted'); self.addClass('hide'); @@ -84,9 +87,12 @@ define(['angular', 'underscore', 'jquery', 'modules/helpers', 'uikit', 'history' helpers.UI.showSnackbar('Account ' + username + ' Successfully Deleted', false); } + running = false; }).error(function(err) { console.log('[trudesk:accounts:deleteAccount] - Error: ' + err.error); helpers.UI.showSnackbar(err.error, true); + + running = false; }); }; diff --git a/src/public/js/pages/accounts.js b/src/public/js/pages/accounts.js index 9b1abd956..9f34a7f77 100644 --- a/src/public/js/pages/accounts.js +++ b/src/public/js/pages/accounts.js @@ -196,8 +196,8 @@ define('pages/accounts', [ html += '
'; html += ''; html += '
'; html += '';