From 038b18a209381230440b78774568ff567190160d Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 31 Aug 2018 11:04:07 +0100 Subject: [PATCH 1/3] change email: catch invalid emails and don't pass the error back on invalid requests --- .../app/coffee/Features/Newsletter/NewsletterManager.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Newsletter/NewsletterManager.coffee b/services/web/app/coffee/Features/Newsletter/NewsletterManager.coffee index 5debc762b0..d32ba6233f 100644 --- a/services/web/app/coffee/Features/Newsletter/NewsletterManager.coffee +++ b/services/web/app/coffee/Features/Newsletter/NewsletterManager.coffee @@ -46,11 +46,15 @@ module.exports = else if err? and err?.message?.indexOf("could not be validated") != -1 logger.log {oldEmail, newEmail}, "unable to change email in newsletter, user has previously unsubscribed or new email already exist on list" - return callback(err) + return callback() else if err? and err.message.indexOf("is already a list member") != -1 logger.log {oldEmail, newEmail}, "unable to change email in newsletter, new email is already on mailing list" return callback() + else if err? and err?.message?.indexOf("looks fake or invalid") != -1 + logger.log {oldEmail, newEmail}, + "unable to change email in newsletter, email looks fake to mailchimp" + return callback() else if err? logger.err {err, oldEmail, newEmail}, "error changing email in newsletter" return callback(err) From bab334aa44df8d51baed8225c78c76f02817a17b Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 31 Aug 2018 11:16:28 +0100 Subject: [PATCH 2/3] fire and forget changeEmail in setDefaultEmailAddress prevents blocking/erroring the change email workflow --- services/web/app/coffee/Features/User/UserUpdater.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/User/UserUpdater.coffee b/services/web/app/coffee/Features/User/UserUpdater.coffee index 3abffdf444..04bdfd5a4f 100644 --- a/services/web/app/coffee/Features/User/UserUpdater.coffee +++ b/services/web/app/coffee/Features/User/UserUpdater.coffee @@ -112,7 +112,8 @@ module.exports = UserUpdater = 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 + callback() + NewsletterManager.changeEmail oldEmail, email, -> From 245ad2a2a866f24bf8b93cb3731d73a45011fbb5 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 31 Aug 2018 11:49:45 +0100 Subject: [PATCH 3/3] call changeEmail before the callback in setDefaultEmailAddress --- services/web/app/coffee/Features/User/UserUpdater.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/User/UserUpdater.coffee b/services/web/app/coffee/Features/User/UserUpdater.coffee index 04bdfd5a4f..c8f35eba10 100644 --- a/services/web/app/coffee/Features/User/UserUpdater.coffee +++ b/services/web/app/coffee/Features/User/UserUpdater.coffee @@ -112,8 +112,8 @@ module.exports = UserUpdater = else if res.n == 0 # TODO: Check n or nMatched? return callback(new Error('Default email does not belong to user')) else - callback() NewsletterManager.changeEmail oldEmail, email, -> + callback()