UserDeleter.coffee 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. User = require("../../models/User").User
  2. NewsletterManager = require "../Newsletter/NewsletterManager"
  3. ProjectDeleter = require("../Project/ProjectDeleter")
  4. logger = require("logger-sharelatex")
  5. SubscriptionHandler = require("../Subscription/SubscriptionHandler")
  6. async = require("async")
  7. { deleteAffiliations } = require("../Institutions/InstitutionsAPI")
  8. module.exports =
  9. deleteUser: (user_id, callback = ()->)->
  10. if !user_id?
  11. logger.err "user_id is null when trying to delete user"
  12. return callback("no user_id")
  13. User.findById user_id, (err, user)->
  14. if err?
  15. return callback(err)
  16. logger.log user:user, "deleting user"
  17. async.series [
  18. (cb)->
  19. NewsletterManager.unsubscribe user, cb
  20. (cb)->
  21. ProjectDeleter.deleteUsersProjects user._id, cb
  22. (cb)->
  23. SubscriptionHandler.cancelSubscription user, cb
  24. (cb)->
  25. deleteAffiliations user._id, cb
  26. (cb)->
  27. user.remove cb
  28. ], (err)->
  29. if err?
  30. logger.err err:err, user_id:user_id, "something went wrong deleteing the user"
  31. callback err