mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-08 13:02:03 +00:00
Remove tokenMembers sync to clients
This commit is contained in:
parent
74c231826d
commit
8561b69ee9
11 changed files with 24 additions and 99 deletions
|
@ -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})
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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,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) ->
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
|
|
|
@ -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
|
||||
})
|
||||
|
||||
}
|
||||
]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue