Sfoglia il codice sorgente

Merge pull request #1071 from sharelatex/sk-enable-git-bridge-in-v2

Enable git-bridge in v2

GitOrigin-RevId: 24586c7c80b53ae171199ecde538df794f78ecc7
Shane Kilkelly 7 anni fa
parent
commit
81b09c7800

+ 2 - 0
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 = [])->

+ 2 - 0
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'

+ 1 - 0
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 }

+ 1 - 0
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')}",

+ 5 - 1
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' ]
+					'video': [ 'alt', 'class', 'controls', 'height', 'width' ]

+ 1 - 0
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",

BIN
services/web/public/img/teasers/git-bridge/teaser-git-bridge-editor.png


+ 25 - 0
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)
+  }
+)

+ 4 - 0
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

+ 27 - 0
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"