Don't leave dangling users in mailchimp when change-address fails (#2165)

* Don't leave dangling users in mailchimp when change-address fails

Also prevents upserting of users when unsubscribing

bug: overleaf/issues#2220
bug: overleaf/issues#2301
bug: overleaf/issues#2302

* Tidy up NewsletterManager. Enable deletion of contacts on account delete.

GitOrigin-RevId: ab7cde7a7b7018b37dea54ffa154e02c5aea0244
This commit is contained in:
Simon Detheridge
2019-09-25 14:47:57 +00:00
committed by sharelatex
parent 13a53b8fbc
commit 111d22d260
6 changed files with 187 additions and 84 deletions
@@ -110,7 +110,7 @@ async function _cleanupUser(user) {
if (user == null) {
throw new Error('no user supplied')
}
await NewsletterManager.promises.unsubscribe(user)
await NewsletterManager.promises.unsubscribe(user, { delete: true })
await SubscriptionHandler.promises.cancelSubscription(user)
await InstitutionsAPI.promises.deleteAffiliations(user._id)
await SubscriptionUpdater.promises.removeUserFromAllGroups(user._id)
@@ -172,7 +172,7 @@ const UserUpdater = {
if (res.n === 0) {
return callback(new Error('email update error'))
}
NewsletterManager.changeEmail(oldEmail, email, err => {
NewsletterManager.changeEmail(user, email, err => {
if (err != null) {
logger.warn(
{ err, oldEmail, newEmail: email },