diff --git a/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee b/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee index 354b983d6e..d49e409141 100644 --- a/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee +++ b/services/web/app/coffee/Features/AccountMerge/AccountMergeEmailController.coffee @@ -1,5 +1,44 @@ +UserGetter = require '../User/UserGetter' +UserUpdater = require '../User/UserUpdater' +OneTimeTokenHandler = require '../Security/OneTimeTokenHandler' +logger = require 'logger-sharelatex' +Settings = require 'settings-sharelatex' + module.exports = AccountMergeEmailController = confirmMergeFromEmail: (req, res, next) -> - return res.render('account_merge/finish', {}) + token = req.query.token + if !token + return res.status(400).send() + OneTimeTokenHandler.getValueFromTokenAndExpire 'account-merge-email-to-ol', token, (err, data) -> + return next(err) if err? + if !data + 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 + } + }, (err) -> + return next(err) if err? + res.render 'account_merge/finish', { + finalEmail: final_email, + continueUrl: "#{Settings.accountMerge.sharelatexHost}/user/login_to_ol_v2" + } diff --git a/services/web/app/views/account_merge/finish.pug b/services/web/app/views/account_merge/finish.pug index ef6d0a1428..17dbbcb73f 100644 --- a/services/web/app/views/account_merge/finish.pug +++ b/services/web/app/views/account_merge/finish.pug @@ -12,4 +12,6 @@ block content div.container-fluid .row .col-md-12 - p Test + p New email is #{finalEmail} + p + a.btn.btn-lg.btn-success(href=continueUrl) Continue diff --git a/services/web/public/coffee/main/account-merge-checker.coffee b/services/web/public/coffee/main/account-merge-checker.coffee index 98c6b265cd..59853abe4e 100644 --- a/services/web/public/coffee/main/account-merge-checker.coffee +++ b/services/web/public/coffee/main/account-merge-checker.coffee @@ -8,7 +8,6 @@ define [ $scope.olEmail = "" $scope.errorCode = null $scope.success = null - console.log ">>>> here" $scope.submitEmail = () -> return if !$scope.olEmail @@ -16,15 +15,12 @@ define [ overleafEmail: $scope.olEmail _csrf: window.csrfToken } - console.log ">>>> sending email", data $scope.errorCode = null $http.post("/account-merge/email/overleaf", data) .then (resp) -> - console.log ">>>> success", resp $scope.errorCode = null $scope.success = true .catch (resp) -> - console.log ">>>> error", resp $scope.errorCode = resp?.data?.errorCode || 'default_error' $scope.success = false