User = require("../../models/User").User NewsletterManager = require "../Newsletter/NewsletterManager" ProjectDeleter = require("../Project/ProjectDeleter") logger = require("logger-sharelatex") SubscriptionHandler = require("../Subscription/SubscriptionHandler") async = require("async") module.exports = deleteUser: (user_id, callback = ()->)-> if !user_id? logger.err "user_id is null when trying to delete user" return callback("no user_id") User.findById user_id, (err, user)-> if err? return callback(err) logger.log user:user, "deleting user" async.series [ (cb)-> NewsletterManager.unsubscribe user, cb (cb)-> ProjectDeleter.deleteUsersProjects user._id, cb (cb)-> SubscriptionHandler.cancelSubscription user, cb (cb)-> user.remove cb ], (err)-> if err? logger.err err:err, user_id:user_id, "something went wrong deleteing the user" callback err