overleaf/services/web/app/coffee/Features/User/UserDeleter.coffee
2018-07-26 13:01:42 +02:00

33 lines
1 KiB
CoffeeScript

User = require("../../models/User").User
NewsletterManager = require "../Newsletter/NewsletterManager"
ProjectDeleter = require("../Project/ProjectDeleter")
logger = require("logger-sharelatex")
SubscriptionHandler = require("../Subscription/SubscriptionHandler")
async = require("async")
{ deleteAffiliations } = require("../Institutions/InstitutionsAPI")
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)->
deleteAffiliations user._id, cb
(cb)->
user.remove cb
], (err)->
if err?
logger.err err:err, user_id:user_id, "something went wrong deleteing the user"
callback err