From 54a5c563fb8552db48f92d3b60ba7f65b95ec2ce Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 12 Sep 2018 11:08:48 +0100 Subject: [PATCH] Address feedback --- .../AccountMergeEmailController.coffee | 17 ++--------------- .../app/coffee/Features/User/UserUpdater.coffee | 17 +++++++++++++++++ services/web/app/views/account_merge/finish.pug | 3 ++- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee b/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee index f56457e087..7f0872f059 100644 --- a/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee +++ b/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee @@ -17,33 +17,20 @@ module.exports = AccountMergeEmailController = return res.status(404).send() if data.origin != 'sl' logger.log {}, "Only sharelatex origin supported" - # TODO: better error handling return res.status(501).send() { sl_id, v1_id, final_email } = data UserGetter.getUser sl_id, {_id: 1, overleaf: 1}, (err, user) -> return next(err) if err? if !user? logger.err {userId: sl_id}, 'SL user not found for account-merge' - # TODO: better error handling return res.status(400).send() if user?.overleaf?.id? logger.err {userId: sl_id}, 'SL user is already linked to overleaf' return res.status(400).send() logger.log {sl_id, v1_id, final_email, origin: data.origin}, "[AccountMergeEmailController] about to merge sharelatex and overleaf-v1 accounts" - UserUpdater.updateUser sl_id, { - '$set': { - 'overleaf.id': v1_id, - email: final_email - }, - '$push': { - emails: { - email: final_email, createdAt: new Date() - } - } - }, (err) -> + UserUpdater.mergeSharelatexAndV1Accounts sl_id, v1_id, final_email, (err) -> return next(err) if err? res.render 'account_merge/finish', { - finalEmail: final_email, - continueUrl: "#{Settings.accountMerge.sharelatexHost}/user/login_to_ol_v2" + finalEmail: final_email } diff --git a/services/web/app/coffee/Features/User/UserUpdater.coffee b/services/web/app/coffee/Features/User/UserUpdater.coffee index c8f35eba10..c214cd95cc 100644 --- a/services/web/app/coffee/Features/User/UserUpdater.coffee +++ b/services/web/app/coffee/Features/User/UserUpdater.coffee @@ -185,11 +185,28 @@ module.exports = UserUpdater = return callback(new Errors.NotFoundError('user id and email do no match')) FeaturesUpdater.refreshFeatures userId, true, callback + mergeSharelatexAndV1Accounts: (sl_id, v1_id, final_email, callback) -> + UserGetter.getUser {'overleaf.id': v1_id}, {_id: 1}, (err, otherUser) => + if otherUser? + return callback(new Error('v1_id matches an existing user overleaf.id, cannot merge accounts')) + @updateUser sl_id, { + '$set': { + 'overleaf.id': v1_id, + email: final_email + }, + '$push': { + emails: { + email: final_email, createdAt: new Date() + } + } + }, callback + [ 'updateUser' 'changeEmailAddress' 'setDefaultEmailAddress' 'addEmailAddress' 'removeEmailAddress' + 'mergeSharelatexAndV1Accounts' ].map (method) -> metrics.timeAsyncMethod(UserUpdater, method, 'mongo.UserUpdater', logger) diff --git a/services/web/app/views/account_merge/finish.pug b/services/web/app/views/account_merge/finish.pug index dff11557b4..db5982f467 100644 --- a/services/web/app/views/account_merge/finish.pug +++ b/services/web/app/views/account_merge/finish.pug @@ -22,6 +22,7 @@ block content | with your merged account: p.text-center - a.btn.btn-lg.btn-success(href=continueUrl) Continue Logging In + a.btn.btn-lg.btn-success(href=settings.accountMerge.sharelatexHost+'/user/login_to_ol_v2') + | Continue Logging In br a.btn-small(href="/login") or go to the login page