Jelajahi Sumber

Remove tokenMembers sync to clients

Shane Kilkelly 9 tahun lalu
induk
melakukan
8561b69ee9

+ 0 - 10
services/web/app/coffee/Features/Collaborators/CollaboratorsController.coffee

@@ -38,13 +38,3 @@ module.exports = CollaboratorsController =
 				logger.err {projectId}, "error getting members for project"
 				return next(err)
 			res.json({members: members})
-
-	getTokenMembers: (req, res, next) ->
-		projectId = req.params.Project_id
-		logger.log {projectId}, "getting token members for project"
-		CollaboratorsHandler.getTokenMembers projectId, (err, tokenMembers) ->
-			tokenMembers = tokenMembers.slice(0, 100)
-			if err?
-				logger.err {projectId}, "error getting token members for project"
-				return next(err)
-			res.json({tokenMembers})

+ 0 - 12
services/web/app/coffee/Features/Collaborators/CollaboratorsHandler.coffee

@@ -234,18 +234,6 @@ module.exports = CollaboratorsHandler =
 			{owner, members} = ProjectEditorHandler.buildOwnerAndMembersViews(rawMembers)
 			callback(null, members)
 
-	getTokenMembers: (projectId, callback=(err, members)->) ->
-		logger.log {projectId}, "fetching all token members"
-		CollaboratorsHandler.getTokenMembersWithPrivilegeLevels projectId, (error, rawTokenMembers) ->
-			if error?
-				logger.err {projectId, error}, "error getting token members for project"
-				return callback(error)
-			{_owner, tokenMembers} = ProjectEditorHandler.buildOwnerAndMembersViews(
-				null,
-				rawTokenMembers
-			)
-			callback(null, tokenMembers)
-
 	userIsTokenMember: (userId, projectId, callback=(err, isTokenMember)->) ->
 		userId = ObjectId(userId.toString())
 		projectId = ObjectId(projectId.toString())

+ 0 - 7
services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee

@@ -17,13 +17,6 @@ module.exports =
 			CollaboratorsController.getAllMembers
 		)
 
-		webRouter.get(
-			'/project/:Project_id/token_members',
-			AuthenticationController.requireLogin(),
-			AuthorizationMiddlewear.ensureUserCanAdminProject,
-			CollaboratorsController.getTokenMembers
-		)
-
 		# invites
 		webRouter.post(
 			'/project/:Project_id/invite',

+ 12 - 14
services/web/app/coffee/Features/Editor/EditorHttpController.coffee

@@ -40,23 +40,21 @@ module.exports = EditorHttpController =
 			return callback(new Error("not found")) if !project?
 			CollaboratorsHandler.getInvitedMembersWithPrivilegeLevels project, (error, members) ->
 				return callback(error) if error?
-				CollaboratorsHandler.getTokenMembersWithPrivilegeLevels project, (error, tokenMembers) ->
+				UserGetter.getUser user_id, { isAdmin: true }, (error, user) ->
 					return callback(error) if error?
-					UserGetter.getUser user_id, { isAdmin: true }, (error, user) ->
+					token = TokenAccessHandler.getRequestToken(req, project_id)
+					AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, token, (error, privilegeLevel) ->
 						return callback(error) if error?
-						token = TokenAccessHandler.getRequestToken(req, project_id)
-						AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, token, (error, privilegeLevel) ->
+						if !privilegeLevel? or privilegeLevel == PrivilegeLevels.NONE
+							logger.log {project_id, user_id, privilegeLevel}, "not an acceptable privilege level, returning null"
+							return callback null, null, false
+						CollaboratorsInviteHandler.getAllInvites project_id, (error, invites) ->
 							return callback(error) if error?
-							if !privilegeLevel? or privilegeLevel == PrivilegeLevels.NONE
-								logger.log {project_id, user_id, privilegeLevel}, "not an acceptable privilege level, returning null"
-								return callback null, null, false
-							CollaboratorsInviteHandler.getAllInvites project_id, (error, invites) ->
-								return callback(error) if error?
-								logger.log {project_id, user_id, memberCount: members.length, inviteCount: invites.length, privilegeLevel}, "returning project model view"
-								callback(null,
-									ProjectEditorHandler.buildProjectModelView(project, members, invites, tokenMembers),
-									privilegeLevel
-								)
+							logger.log {project_id, user_id, memberCount: members.length, inviteCount: invites.length, privilegeLevel}, "returning project model view"
+							callback(null,
+								ProjectEditorHandler.buildProjectModelView(project, members, invites),
+								privilegeLevel
+							)
 
 	restoreDoc: (req, res, next) ->
 		project_id = req.params.Project_id

+ 3 - 12
services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee

@@ -3,7 +3,7 @@ _ = require("underscore")
 module.exports = ProjectEditorHandler =
 	trackChangesAvailable: false
 
-	buildProjectModelView: (project, members, invites, tokenMembers=[]) ->
+	buildProjectModelView: (project, members, invites) ->
 		result =
 			_id        : project._id
 			name       : project.name
@@ -17,20 +17,15 @@ module.exports = ProjectEditorHandler =
 			deletedByExternalDataSource : project.deletedByExternalDataSource || false
 			deletedDocs: project.deletedDocs
 			members:     []
-			tokenMembers: []
 			invites:     invites
 			tokens:      project.tokens
 
 		if !result.invites?
 			result.invites = []
 
-		{owner, ownerFeatures, members, tokenMembers} = @buildOwnerAndMembersViews(
-			members,
-			tokenMembers
-		)
+		{owner, ownerFeatures, members} = @buildOwnerAndMembersViews(members)
 		result.owner = owner
 		result.members = members
-		result.tokenMembers = tokenMembers
 
 		result.features = _.defaults(ownerFeatures or {}, {
 			collaborators: -1 # Infinite
@@ -46,24 +41,20 @@ module.exports = ProjectEditorHandler =
 
 		return result
 
-	buildOwnerAndMembersViews: (members, tokenMembers) ->
+	buildOwnerAndMembersViews: (members) ->
 		owner = null
 		ownerFeatures = null
 		filteredMembers = []
-		filteredTokenMembers = []
 		for member in (members || [])
 			if member.privilegeLevel == "owner"
 				ownerFeatures = member.user.features
 				owner = @buildUserModelView member.user, "owner"
 			else
 				filteredMembers.push @buildUserModelView member.user, member.privilegeLevel
-		for tokenMember in (tokenMembers || [])
-			filteredTokenMembers.push @buildUserModelView tokenMember.user, tokenMember.privilegeLevel
 		return {
 			owner: owner,
 			ownerFeatures: ownerFeatures,
 			members: filteredMembers,
-			tokenMembers: filteredTokenMembers
 		}
 
 	buildUserModelView: (user, privileges) ->

+ 1 - 0
services/web/app/coffee/Features/TokenAccess/TokenAccessController.coffee

@@ -62,6 +62,7 @@ module.exports = TokenAccessController =
 						logger.err {err, token, userId, projectId: project._id},
 							"error adding user to project with readAndWrite token"
 						return next(err)
+					# TODO: check if this is still needed by the client
 					setTimeout( () ->
 						EditorRealTimeController.emitToRoom(
 							'project:membership:changed',

+ 0 - 10
services/web/public/coffee/ide/share/controllers/ShareController.coffee

@@ -39,14 +39,4 @@ define [
 								$scope.project.invites = data.invites
 						.catch () =>
 							console.error "Error fetching invites for project"
-				if data.tokenMembers
-					console.log ">> token members changed"
-					projectTokenMembers.getTokenMembers()
-						.then (response) =>
-							{ data } = response
-							console.log ">> got token members", data
-							if data.tokenMembers
-								$scope.project.tokenMembers = data.tokenMembers
-						.catch () =>
-							console.error "Error fetching tokenMembers for project"
 	]

+ 0 - 7
services/web/public/coffee/ide/share/services/projectMembers.coffee

@@ -25,12 +25,5 @@ define [
 						"X-Csrf-Token": window.csrfToken
 				})
 
-			getTokenMembers: () ->
-				$http.get("/project/#{ide.project_id}/token_members", {
-					json: true
-					headers:
-						"X-Csrf-Token": window.csrfToken
-				})
-
 		}
 	]

+ 0 - 5
services/web/test/UnitTests/coffee/Editor/EditorHttpControllerTests.coffee

@@ -133,11 +133,6 @@ describe "EditorHttpController", ->
 				@CollaboratorsHandler.getInvitedMembersWithPrivilegeLevels
 					.calledWith(@project)
 					.should.equal true
-			
-			it "should get the list of users who access the project via token links", ->
-				@CollaboratorsHandler.getTokenMembersWithPrivilegeLevels
-					.calledWith(@project)
-					.should.equal true
 
 			it "should look up the user", ->
 				@UserGetter.getUser

+ 3 - 0
services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee

@@ -64,6 +64,8 @@ describe "ProjectController", ->
 		@TokenAccessHandler =
 			getRequestToken: sinon.stub().returns(@token)
 			protectTokens: sinon.stub()
+		@CollaboratorsHandler =
+			userIsTokenMember: sinon.stub().callsArgWith(2, null, false)
 		@ProjectController = SandboxedModule.require modulePath, requires:
 			"settings-sharelatex":@settings
 			"logger-sharelatex":
@@ -90,6 +92,7 @@ describe "ProjectController", ->
 			'../Authentication/AuthenticationController': @AuthenticationController
 			"../Analytics/AnalyticsManager": @AnalyticsManager
 			"../TokenAccess/TokenAccessHandler": @TokenAccessHandler
+			"../Collaborators/CollaboratorsHandler": @CollaboratorsHandler
 
 		@projectName = "£12321jkj9ujkljds"
 		@req =

+ 5 - 22
services/web/test/UnitTests/coffee/Project/ProjectEditorHandlerTests.coffee

@@ -68,15 +68,6 @@ describe "ProjectEditorHandler", ->
 			},
 			privilegeLevel: "readAndWrite"
 		}]
-		@tokenMembers = [{
-			user: {
-				_id: "token-read-only-id"
-				first_name : "TRead"
-				last_name  : "TOnly"
-				email      : "token-read-only@sharelatex.com"
-			},
-			privilegeLevel: "readOnly"
-		}]
 		@invites = [
 			{_id: "invite_one", email: "user-one@example.com", privileges: "readOnly", projectId: @project._id}
 			{_id: "invite_two", email: "user-two@example.com", privileges: "readOnly", projectId: @project._id}
@@ -86,7 +77,7 @@ describe "ProjectEditorHandler", ->
 	describe "buildProjectModelView", ->
 		describe "with owner and members included", ->
 			beforeEach ->
-				@result = @handler.buildProjectModelView @project, @members, @invites, @tokenMembers
+				@result = @handler.buildProjectModelView @project, @members, @invites
 
 			it "should include the id", ->
 				should.exist @result._id
@@ -136,10 +127,6 @@ describe "ProjectEditorHandler", ->
 				findMember("read-write-id").last_name.should.equal "Write"
 				findMember("read-write-id").email.should.equal "read-write@sharelatex.com"
 
-			it 'should include a list of tokenMembers', ->
-				@result.tokenMembers.length.should.equal 1
-				@result.tokenMembers[0]._id.should.equal @tokenMembers[0].user._id
-
 			it "should include folders in the project", ->
 				@result.rootFolder[0]._id.should.equal "root-folder-id"
 				@result.rootFolder[0].name.should.equal ""
@@ -204,10 +191,10 @@ describe "ProjectEditorHandler", ->
 				collaborators: 3
 				compileGroup:"priority"
 				compileTimeout: 22
-			@result = @handler.buildOwnerAndMembersViews @members, @tokenMembers
+			@result = @handler.buildOwnerAndMembersViews @members
 
 		it 'should produce an object with the right keys', ->
-			expect(@result).to.have.all.keys ['owner', 'ownerFeatures', 'members', 'tokenMembers']
+			expect(@result).to.have.all.keys ['owner', 'ownerFeatures', 'members']
 
 		it 'should separate the owner from the members', ->
 			@result.members.length.should.equal(@members.length-1)
@@ -215,10 +202,6 @@ describe "ProjectEditorHandler", ->
 			expect(@result.owner.email).to.equal @owner.email
 			expect(@result.members.filter((m) => m._id == @owner._id).length).to.equal 0
 
-		it 'should include a list of tokenMembers', ->
-			@result.tokenMembers.length.should.equal 1
-			@result.tokenMembers[0]._id.should.equal @tokenMembers[0].user._id
-
 		it 'should extract the ownerFeatures from the owner object', ->
 			expect(@result.ownerFeatures).to.deep.equal @owner.features
 
@@ -226,10 +209,10 @@ describe "ProjectEditorHandler", ->
 			beforeEach ->
 				# remove the owner from members list
 				@membersWithoutOwner = @members.filter((m) => m.user._id != @owner._id)
-				@result = @handler.buildOwnerAndMembersViews @membersWithoutOwner, @tokenMembers
+				@result = @handler.buildOwnerAndMembersViews @membersWithoutOwner
 
 			it 'should produce an object with the right keys', ->
-				expect(@result).to.have.all.keys ['owner', 'ownerFeatures', 'members', 'tokenMembers']
+				expect(@result).to.have.all.keys ['owner', 'ownerFeatures', 'members']
 
 			it 'should not separate out an owner', ->
 				@result.members.length.should.equal @membersWithoutOwner.length