diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 359d0ddeb4..2079c762b4 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/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 c5defbe1c5..dc5f2c16b2 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 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]. - 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.overleaf.host + "/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 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