change email address in newsletter when changing default email

put mongo_id into mailchimp merge fields
This commit is contained in:
Henry Oswald
2018-08-08 13:50:03 +01:00
parent 6208e9f2d0
commit 687637eec7
3 changed files with 38 additions and 12 deletions
@@ -4,7 +4,6 @@ Settings = require 'settings-sharelatex'
crypto = require('crypto')
Mailchimp = require('mailchimp-api-v3')
if !Settings.mailchimp?.api_key?
logger.warn "No newsletter provider configured so not chaning email on user"
mailchimp =
@@ -63,5 +62,6 @@ buildOptions = (user, is_subscribed)->
merge_fields:
FNAME: user.first_name
LNAME: user.last_name
MONGO_ID:user._id
return opts
@@ -100,15 +100,21 @@ module.exports = UserUpdater =
setDefaultEmailAddress: (userId, email, callback) ->
email = EmailHelper.parseEmail(email)
return callback(new Error('invalid email')) if !email?
query = _id: userId, 'emails.email': email
update = $set: email: email
@updateUser query, update, (error, res) ->
if error?
logger.err error:error, 'problem setting default emails'
UserGetter.getUserEmail userId, (error, oldEmail) =>
if err?
return callback(error)
if res.n == 0 # TODO: Check n or nMatched?
return callback(new Error('Default email does not belong to user'))
callback()
query = _id: userId, 'emails.email': email
update = $set: email: email
@updateUser query, update, (error, res) ->
if error?
logger.err error:error, 'problem setting default emails'
return callback(error)
else if res.n == 0 # TODO: Check n or nMatched?
return callback(new Error('Default email does not belong to user'))
else
NewsletterManager.changeEmail oldEmail, email, callback
updateV1AndSetDefaultEmailAddress: (userId, email, callback) ->
@updateEmailAddressInV1 userId, email, (error) =>