From 81b09c78007da5faab98b11336af5cdfb34b3cf4 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 14 Nov 2018 11:08:15 +0000 Subject: [PATCH] Merge pull request #1071 from sharelatex/sk-enable-git-bridge-in-v2 Enable git-bridge in v2 GitOrigin-RevId: 24586c7c80b53ae171199ecde538df794f78ecc7 --- .../Features/Project/ProjectController.coffee | 2 ++ .../app/coffee/infrastructure/Features.coffee | 2 ++ services/web/app/coffee/models/User.coffee | 1 + services/web/app/views/project/editor.pug | 1 + services/web/config/settings.defaults.coffee | 6 +++- services/web/package.json | 1 + .../git-bridge/teaser-git-bridge-editor.png | Bin 0 -> 9634 bytes .../web/scripts/add_git_bridge_feature.js | 25 ++++++++++++++++ .../acceptance/config/settings.test.coffee | 4 +++ .../AuthorizationMiddlewearTests.coffee | 27 ++++++++++++++++++ 10 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 services/web/public/img/teasers/git-bridge/teaser-git-bridge-editor.png create mode 100644 services/web/scripts/add_git_bridge_feature.js diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 00c066b831..618fc7c0b4 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -369,6 +369,8 @@ module.exports = ProjectController = showTestControls: req.query?.tc == 'true' || user.isAdmin brandVariation: brandVariation allowedImageNames: Settings.allowedImageNames || [] + gitBridgePublicBaseUrl: Settings.gitBridgePublicBaseUrl + showGitBridge: req.query?.gitbridge == 'true' || user.isAdmin timer.done() _buildProjectList: (allProjects, v1Projects = [])-> diff --git a/services/web/app/coffee/infrastructure/Features.coffee b/services/web/app/coffee/infrastructure/Features.coffee index 5faceae9ce..cb40bb3754 100644 --- a/services/web/app/coffee/infrastructure/Features.coffee +++ b/services/web/app/coffee/infrastructure/Features.coffee @@ -12,6 +12,8 @@ module.exports = Features = return not Features.externalAuthenticationSystemUsed() or Settings.overleaf? when 'github-sync' return Settings.enableGithubSync + when 'git-bridge' + return Settings.enableGitBridge when 'v1-return-message' return Settings.accountMerge? and Settings.overleaf? when 'custom-togglers' diff --git a/services/web/app/coffee/models/User.coffee b/services/web/app/coffee/models/User.coffee index 8617ce482c..b08b310135 100644 --- a/services/web/app/coffee/models/User.coffee +++ b/services/web/app/coffee/models/User.coffee @@ -43,6 +43,7 @@ UserSchema = new Schema versioning: { type:Boolean, default: Settings.defaultFeatures.versioning } dropbox: { type:Boolean, default: Settings.defaultFeatures.dropbox } github: { type:Boolean, default: Settings.defaultFeatures.github } + gitBridge: { type:Boolean, default: Settings.defaultFeatures.gitBridge } compileTimeout: { type:Number, default: Settings.defaultFeatures.compileTimeout } compileGroup: { type:String, default: Settings.defaultFeatures.compileGroup } templates: { type:Boolean, default: Settings.defaultFeatures.templates } diff --git a/services/web/app/views/project/editor.pug b/services/web/app/views/project/editor.pug index d39e1856a7..5c48bb87f8 100644 --- a/services/web/app/views/project/editor.pug +++ b/services/web/app/views/project/editor.pug @@ -135,6 +135,7 @@ block requirejs window.trackChangesState = data.trackChangesState; window.wikiEnabled = #{!!(settings.apis.wiki && settings.apis.wiki.url)}; window.richTextEnabled = #{richTextEnabled} + window.gitBridgePublicBaseUrl = '#{gitBridgePublicBaseUrl}' window.requirejs = { "paths" : { "moment": "libs/#{lib('moment')}", diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index 44532ad6e7..770bc11d98 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -167,6 +167,8 @@ module.exports = settings = url: v1Api.url user: v1Api.user pass: v1Api.pass + v1_history: + url: "http://#{process.env['V1_HISTORY_HOST'] or "localhost"}:3100/api" templates: user_id: process.env.TEMPLATES_USER_ID or "5395eb7aad1f29a88756c7f2" @@ -213,6 +215,8 @@ module.exports = settings = defaultFeatures: defaultFeatures = collaborators: -1 dropbox: true + github: true + gitBridge: true versioning: true compileTimeout: 180 compileGroup: "standard" @@ -509,4 +513,4 @@ module.exports = settings = 'iframe': [ 'allowfullscreen', 'frameborder', 'height', 'src', 'width' ] 'img': [ 'alt', 'class', 'src', 'style' ] 'source': [ 'src', 'type' ] - 'video': [ 'alt', 'class', 'controls', 'height', 'width' ] \ No newline at end of file + 'video': [ 'alt', 'class', 'controls', 'height', 'width' ] diff --git a/services/web/package.json b/services/web/package.json index 84c0e9264a..21e057c67f 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -77,6 +77,7 @@ "nodemailer-ses-transport": "^1.3.0", "nvd3": "^1.8.6", "optimist": "0.6.1", + "overleaf-error-type": "git+https://github.com/overleaf/overleaf-error-type.git", "passport": "^0.3.2", "passport-google-oauth20": "^1.0.0", "passport-ldapauth": "^0.6.0", diff --git a/services/web/public/img/teasers/git-bridge/teaser-git-bridge-editor.png b/services/web/public/img/teasers/git-bridge/teaser-git-bridge-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..cef0cf45fb4c0ec26b9fa1f3f4f24b9991eb0df6 GIT binary patch literal 9634 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 H8UDWje&QS? literal 0 HcmV?d00001 diff --git a/services/web/scripts/add_git_bridge_feature.js b/services/web/scripts/add_git_bridge_feature.js new file mode 100644 index 0000000000..f98f19fb98 --- /dev/null +++ b/services/web/scripts/add_git_bridge_feature.js @@ -0,0 +1,25 @@ +const { db } = require('../app/js/infrastructure/mongojs') +const logger = require('logger-sharelatex') +logger.logger.level('error') + +logger.log({}, 'Updating users in mongo') + +db.users.update( + { + 'features.github': true + }, + { + $set: { 'features.gitBridge': true } + }, + function(err, result) { + if (err) { + logger.err({ err: err, result: result }, 'Error updating users in mongo') + return + } + logger.log( + { result: result }, + 'Updated users who have github to have gitBridge too' + ) + process.exit(0) + } +) diff --git a/services/web/test/acceptance/config/settings.test.coffee b/services/web/test/acceptance/config/settings.test.coffee index 4e9954a44e..804459d115 100644 --- a/services/web/test/acceptance/config/settings.test.coffee +++ b/services/web/test/acceptance/config/settings.test.coffee @@ -16,6 +16,7 @@ module.exports = dropbox: false versioning: false github: true + gitBridge: true templates: false references: false referencesSearch: false @@ -28,6 +29,7 @@ module.exports = dropbox: false versioning: false github: false + gitBridge: false templates: false references: false referencesSearch: false @@ -40,6 +42,7 @@ module.exports = dropbox: true versioning: true github: true + gitBridge: true templates: true references: true referencesSearch: true @@ -52,6 +55,7 @@ module.exports = dropbox: true versioning: true github: true + gitBridge: true templates: true references: true referencesSearch: true diff --git a/services/web/test/unit/coffee/Authorization/AuthorizationMiddlewearTests.coffee b/services/web/test/unit/coffee/Authorization/AuthorizationMiddlewearTests.coffee index fc5b261d09..b1f29d1c4b 100644 --- a/services/web/test/unit/coffee/Authorization/AuthorizationMiddlewearTests.coffee +++ b/services/web/test/unit/coffee/Authorization/AuthorizationMiddlewearTests.coffee @@ -28,6 +28,33 @@ describe "AuthorizationMiddlewear", -> @ObjectId.isValid.withArgs(@project_id).returns true @next = sinon.stub() + describe "_getUserId", -> + beforeEach -> + @req = {} + + it "should get the user from session", (done) -> + @AuthenticationController.getLoggedInUserId = sinon.stub().returns("1234") + @AuthorizationMiddlewear._getUserId @req, (err, user_id) => + expect(err).to.not.exist + expect(user_id).to.equal "1234" + done() + + it "should get oauth_user from request", (done) -> + @AuthenticationController.getLoggedInUserId = sinon.stub().returns(null) + @req.oauth_user = {_id: "5678"} + @AuthorizationMiddlewear._getUserId @req, (err, user_id) => + expect(err).to.not.exist + expect(user_id).to.equal "5678" + done() + + it "should fall back to null", (done) -> + @AuthenticationController.getLoggedInUserId = sinon.stub().returns(null) + @req.oauth_user = undefined + @AuthorizationMiddlewear._getUserId @req, (err, user_id) => + expect(err).to.not.exist + expect(user_id).to.equal null + done() + METHODS_TO_TEST = { "ensureUserCanReadProject": "canUserReadProject" "ensureUserCanWriteProjectSettings": "canUserWriteProjectSettings"