From 626f652c771fda6ca2bdc31cb2419302bae117ec Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 24 Jan 2018 16:56:31 +0000 Subject: [PATCH 1/4] Update User acceptance test helper to expose methods for modules --- .../acceptance/coffee/helpers/User.coffee | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/services/web/test/acceptance/coffee/helpers/User.coffee b/services/web/test/acceptance/coffee/helpers/User.coffee index ad728fb263..7d8e9086d4 100644 --- a/services/web/test/acceptance/coffee/helpers/User.coffee +++ b/services/web/test/acceptance/coffee/helpers/User.coffee @@ -18,22 +18,27 @@ class User }) login: (callback = (error) ->) -> - @getCsrfToken (error) => + @ensureUserExists (error) => return callback(error) if error? - filter = {@email} - options = {upsert: true, new: true, setDefaultsOnInsert: true} - UserModel.findOneAndUpdate filter, {}, options, (error, user) => + @getCsrfToken (error) => return callback(error) if error? - AuthenticationManager.setUserPassword user._id, @password, (error) => - return callback(error) if error? - @id = user?._id?.toString() - @_id = user?._id?.toString() - @first_name = user?.first_name - @referal_id = user?.referal_id - @request.post { - url: "/login" - json: { @email, @password } - }, callback + @request.post { + url: "/login" + json: { @email, @password } + }, callback + + ensureUserExists: (callback = (error) ->) -> + filter = {@email} + options = {upsert: true, new: true, setDefaultsOnInsert: true} + UserModel.findOneAndUpdate filter, {}, options, (error, user) => + return callback(error) if error? + AuthenticationManager.setUserPassword user._id, @password, (error) => + return callback(error) if error? + @id = user?._id?.toString() + @_id = user?._id?.toString() + @first_name = user?.first_name + @referal_id = user?.referal_id + callback(null, @password) logout: (callback = (error) ->) -> @getCsrfToken (error) => @@ -212,6 +217,14 @@ class User return callback(error) if error? callback(null, response.statusCode) - + isLoggedIn: (callback = (error, loggedIn) ->) -> + @request.get "/user/personal_info", (error, response, body) -> + return callback(error) if error? + if response.statusCode == 200 + return callback(null, true) + else if response.statusCode == 302 + return callback(null, false) + else + return callback(new Error("unexpected status code from /user/personal_info: #{response.statusCode}")) module.exports = User From 3ed805a65ab224ad0dcad8aca1956db817b2c83c Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 24 Jan 2018 16:56:51 +0000 Subject: [PATCH 2/4] Show different message if user comes from SL rather than OL v2 --- .../Features/Project/ProjectController.coffee | 2 +- .../coffee/infrastructure/ExpressLocals.coffee | 4 ++++ services/web/app/views/project/list.pug | 15 ++++++++++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 722d0b73b4..f715031419 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -157,7 +157,7 @@ module.exports = ProjectController = hasSubscription: (cb)-> LimitationsManager.userHasSubscriptionOrIsGroupMember currentUser, cb user: (cb) -> - User.findById user_id, "featureSwitches", cb + User.findById user_id, "featureSwitches overleaf", cb }, (err, results)-> if err? logger.err err:err, "error getting data for project list page" diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index dcacf17033..1237a6ceb6 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -93,6 +93,10 @@ module.exports = (app, webRouter, privateApiRouter, publicApiRouter)-> req.externalAuthenticationSystemUsed = Features.externalAuthenticationSystemUsed res.locals.externalAuthenticationSystemUsed = Features.externalAuthenticationSystemUsed req.hasFeature = res.locals.hasFeature = Features.hasFeature + res.locals.userIsFromOLv1 = (user) -> + user.overleaf?.id? + res.locals.userIsFromSL = (user) -> + !user.overleaf?.id? next() webRouter.use (req, res, next)-> diff --git a/services/web/app/views/project/list.pug b/services/web/app/views/project/list.pug index c5defbe1c5..6256a8f43e 100644 --- a/services/web/app/views/project/list.pug +++ b/services/web/app/views/project/list.pug @@ -64,13 +64,18 @@ block content aside.project-list-sidebar.col-md-2.col-xs-3 include ./list/side-bar - if isShowingV1Projects && settings.overleaf && settings.overleaf.host + if settings.accountMerge && settings.overleaf .project-list-sidebar-v2-pane.col-md-2.col-xs-3 span Welcome to the Overleaf v2 alpha! #[a(href="https://www.overleaf.com/help/342-overleaf-v2-faq") Find out more]. - span To tag or rename your v1 projects, please go back to Overleaf v1. - a.project-list-sidebar-v1-link( - href=settings.overleaf.host + "/dash?prefer-v1-dash=1" - ) Go back to v1 + if userIsFromOLv1(user) + span To tag or rename your v1 projects, please go back to Overleaf v1. + a.project-list-sidebar-v1-link( + href=settings.accountMerge.betaHost + "/dash?prefer-v1-dash=1" + ) Go back to v1 + if userIsFromSL(user) + a.project-list-sidebar-v1-link( + href=settings.accountMerge.sharelatexHost + ) Go back to ShareLaTeX .project-list-main.col-md-10.col-xs-9 include ./list/notifications From 7e829f69441ca6ef7905b5dfef9bcfe21b4695c6 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 26 Jan 2018 11:32:17 +0000 Subject: [PATCH 3/4] Fix OL v1 URL --- services/web/app/views/project/list.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/list.pug b/services/web/app/views/project/list.pug index 6256a8f43e..f296d2b25b 100644 --- a/services/web/app/views/project/list.pug +++ b/services/web/app/views/project/list.pug @@ -70,7 +70,7 @@ block content if userIsFromOLv1(user) span To tag or rename your v1 projects, please go back to Overleaf v1. a.project-list-sidebar-v1-link( - href=settings.accountMerge.betaHost + "/dash?prefer-v1-dash=1" + href=settings.overleaf.host + "/dash?prefer-v1-dash=1" ) Go back to v1 if userIsFromSL(user) a.project-list-sidebar-v1-link( From de7f13aea67348d93a491ee24478535393d680ca Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 31 Jan 2018 10:05:56 +0000 Subject: [PATCH 4/4] Use hasFeature for message about returning to v1/SL --- services/web/app/coffee/infrastructure/Features.coffee | 2 ++ services/web/app/views/project/list.pug | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/infrastructure/Features.coffee b/services/web/app/coffee/infrastructure/Features.coffee index 7047826bbb..a49e0ec124 100644 --- a/services/web/app/coffee/infrastructure/Features.coffee +++ b/services/web/app/coffee/infrastructure/Features.coffee @@ -12,5 +12,7 @@ module.exports = Features = return not Features.externalAuthenticationSystemUsed() when 'github-sync' return Settings.enableGithubSync + when 'v1-return-message' + return Settings.accountMerge? and Settings.overleaf? else throw new Error("unknown feature: #{feature}") diff --git a/services/web/app/views/project/list.pug b/services/web/app/views/project/list.pug index f296d2b25b..dc5f2c16b2 100644 --- a/services/web/app/views/project/list.pug +++ b/services/web/app/views/project/list.pug @@ -64,7 +64,7 @@ block content aside.project-list-sidebar.col-md-2.col-xs-3 include ./list/side-bar - if settings.accountMerge && settings.overleaf + if hasFeature('v1-return-message') .project-list-sidebar-v2-pane.col-md-2.col-xs-3 span Welcome to the Overleaf v2 alpha! #[a(href="https://www.overleaf.com/help/342-overleaf-v2-faq") Find out more]. if userIsFromOLv1(user)