mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-15 06:33:55 +01:00
Move collaborator HTTP end points into the Collaborators feature
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
ProjectGetter = require "../Project/ProjectGetter"
|
ProjectGetter = require "../Project/ProjectGetter"
|
||||||
CollaboratorsHandler = require "./CollaboratorsHandler"
|
CollaboratorsHandler = require "./CollaboratorsHandler"
|
||||||
|
EditorController = require "../Editor/EditorController"
|
||||||
|
|
||||||
module.exports = CollaboratorsController =
|
module.exports = CollaboratorsController =
|
||||||
getCollaborators: (req, res, next = (error) ->) ->
|
getCollaborators: (req, res, next = (error) ->) ->
|
||||||
@@ -21,6 +21,20 @@ module.exports = CollaboratorsController =
|
|||||||
return next(error) if error?
|
return next(error) if error?
|
||||||
res.send 204
|
res.send 204
|
||||||
|
|
||||||
|
addUserToProject: (req, res, next) ->
|
||||||
|
project_id = req.params.Project_id
|
||||||
|
{email, privileges} = req.body
|
||||||
|
EditorController.addUserToProject project_id, email, privileges, (error, user) ->
|
||||||
|
return next(error) if error?
|
||||||
|
res.json user: user
|
||||||
|
|
||||||
|
removeUserFromProject: (req, res, next) ->
|
||||||
|
project_id = req.params.Project_id
|
||||||
|
user_id = req.params.user_id
|
||||||
|
EditorController.removeUserFromProject project_id, user_id, (error)->
|
||||||
|
return next(error) if error?
|
||||||
|
res.send 204
|
||||||
|
|
||||||
_formatCollaborators: (project, callback = (error, collaborators) ->) ->
|
_formatCollaborators: (project, callback = (error, collaborators) ->) ->
|
||||||
collaborators = []
|
collaborators = []
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
CollaboratorsController = require('./CollaboratorsController')
|
||||||
|
SecurityManager = require('../../managers/SecurityManager')
|
||||||
|
AuthenticationController = require('../Authentication/AuthenticationController')
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
apply: (app) ->
|
||||||
|
app.post '/project/:project_id/leave', AuthenticationController.requireLogin(), CollaboratorsController.removeSelfFromProject
|
||||||
|
app.get '/project/:Project_id/collaborators', SecurityManager.requestCanAccessProject(allow_auth_token: true), CollaboratorsController.getCollaborators
|
||||||
|
|
||||||
|
app.post '/project/:Project_id/users', SecurityManager.requestIsOwner, CollaboratorsController.addUserToProject
|
||||||
|
app.delete '/project/:Project_id/users/:user_id', SecurityManager.requestIsOwner, CollaboratorsController.removeUserFromProject
|
||||||
@@ -77,17 +77,4 @@ module.exports = EditorHttpController =
|
|||||||
return next(error) if error?
|
return next(error) if error?
|
||||||
res.send 204
|
res.send 204
|
||||||
|
|
||||||
addUserToProject: (req, res, next) ->
|
|
||||||
project_id = req.params.Project_id
|
|
||||||
{email, privileges} = req.body
|
|
||||||
EditorController.addUserToProject project_id, email, privileges, (error, user) ->
|
|
||||||
return next(error) if error?
|
|
||||||
res.json user: user
|
|
||||||
|
|
||||||
removeUserFromProject: (req, res, next) ->
|
|
||||||
project_id = req.params.Project_id
|
|
||||||
user_id = req.params.user_id
|
|
||||||
EditorController.removeUserFromProject project_id, user_id, (error)->
|
|
||||||
return next(error) if error?
|
|
||||||
res.send 204
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,3 @@ module.exports =
|
|||||||
app.delete '/project/:Project_id/folder/:entity_id', SecurityManager.requestCanModifyProject, EditorHttpController.deleteFolder
|
app.delete '/project/:Project_id/folder/:entity_id', SecurityManager.requestCanModifyProject, EditorHttpController.deleteFolder
|
||||||
|
|
||||||
app.post '/project/:Project_id/doc/:doc_id/restore', SecurityManager.requestCanModifyProject, EditorHttpController.restoreDoc
|
app.post '/project/:Project_id/doc/:doc_id/restore', SecurityManager.requestCanModifyProject, EditorHttpController.restoreDoc
|
||||||
|
|
||||||
app.post '/project/:Project_id/users', SecurityManager.requestIsOwner, EditorHttpController.addUserToProject
|
|
||||||
app.delete '/project/:Project_id/users/:user_id', SecurityManager.requestIsOwner, EditorHttpController.removeUserFromProject
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ TemplatesController = require('./Features/Templates/TemplatesController')
|
|||||||
TemplatesMiddlewear = require('./Features/Templates/TemplatesMiddlewear')
|
TemplatesMiddlewear = require('./Features/Templates/TemplatesMiddlewear')
|
||||||
AuthenticationController = require('./Features/Authentication/AuthenticationController')
|
AuthenticationController = require('./Features/Authentication/AuthenticationController')
|
||||||
TagsController = require("./Features/Tags/TagsController")
|
TagsController = require("./Features/Tags/TagsController")
|
||||||
CollaboratorsController = require('./Features/Collaborators/CollaboratorsController')
|
CollaboratorsRouter = require('./Features/Collaborators/CollaboratorsRouter')
|
||||||
UserInfoController = require('./Features/User/UserInfoController')
|
UserInfoController = require('./Features/User/UserInfoController')
|
||||||
UserController = require("./Features/User/UserController")
|
UserController = require("./Features/User/UserController")
|
||||||
UserPagesController = require('./Features/User/UserPagesController')
|
UserPagesController = require('./Features/User/UserPagesController')
|
||||||
@@ -63,6 +63,7 @@ module.exports = class Router
|
|||||||
app.post '/register', UserController.register
|
app.post '/register', UserController.register
|
||||||
|
|
||||||
EditorRouter.apply(app)
|
EditorRouter.apply(app)
|
||||||
|
CollaboratorsRouter.apply(app)
|
||||||
SubscriptionRouter.apply(app)
|
SubscriptionRouter.apply(app)
|
||||||
UploadsRouter.apply(app)
|
UploadsRouter.apply(app)
|
||||||
PasswordResetRouter.apply(app)
|
PasswordResetRouter.apply(app)
|
||||||
@@ -113,7 +114,6 @@ module.exports = class Router
|
|||||||
app.get "/project/:Project_id/sync/code", SecurityManager.requestCanAccessProject, CompileController.proxySync
|
app.get "/project/:Project_id/sync/code", SecurityManager.requestCanAccessProject, CompileController.proxySync
|
||||||
app.get "/project/:Project_id/sync/pdf", SecurityManager.requestCanAccessProject, CompileController.proxySync
|
app.get "/project/:Project_id/sync/pdf", SecurityManager.requestCanAccessProject, CompileController.proxySync
|
||||||
|
|
||||||
|
|
||||||
app.del '/Project/:Project_id', SecurityManager.requestIsOwner, ProjectController.deleteProject
|
app.del '/Project/:Project_id', SecurityManager.requestIsOwner, ProjectController.deleteProject
|
||||||
app.post '/Project/:Project_id/restore', SecurityManager.requestIsOwner, ProjectController.restoreProject
|
app.post '/Project/:Project_id/restore', SecurityManager.requestIsOwner, ProjectController.restoreProject
|
||||||
app.post '/Project/:Project_id/clone', SecurityManager.requestCanAccessProject, ProjectController.cloneProject
|
app.post '/Project/:Project_id/clone', SecurityManager.requestCanAccessProject, ProjectController.cloneProject
|
||||||
@@ -124,9 +124,6 @@ module.exports = class Router
|
|||||||
app.get "/project/:Project_id/doc/:doc_id/diff", SecurityManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
app.get "/project/:Project_id/doc/:doc_id/diff", SecurityManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
||||||
app.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", SecurityManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
app.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", SecurityManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
||||||
|
|
||||||
app.post '/project/:project_id/leave', AuthenticationController.requireLogin(), CollaboratorsController.removeSelfFromProject
|
|
||||||
app.get '/project/:Project_id/collaborators', SecurityManager.requestCanAccessProject(allow_auth_token: true), CollaboratorsController.getCollaborators
|
|
||||||
|
|
||||||
app.get '/project/:Project_id/connected_users', SecurityManager.requestCanAccessProject, ConnectedUsersController.getConnectedUsers
|
app.get '/project/:Project_id/connected_users', SecurityManager.requestCanAccessProject, ConnectedUsersController.getConnectedUsers
|
||||||
|
|
||||||
app.get '/Project/:Project_id/download/zip', SecurityManager.requestCanAccessProject, ProjectDownloadsController.downloadProject
|
app.get '/Project/:Project_id/download/zip', SecurityManager.requestCanAccessProject, ProjectDownloadsController.downloadProject
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ describe "CollaboratorsController", ->
|
|||||||
@CollaboratorsController = SandboxedModule.require modulePath, requires:
|
@CollaboratorsController = SandboxedModule.require modulePath, requires:
|
||||||
"../Project/ProjectGetter": @ProjectGetter = {}
|
"../Project/ProjectGetter": @ProjectGetter = {}
|
||||||
"./CollaboratorsHandler": @CollaboratorsHandler
|
"./CollaboratorsHandler": @CollaboratorsHandler
|
||||||
|
"../Editor/EditorController": @EditorController = {}
|
||||||
@res = new MockResponse()
|
@res = new MockResponse()
|
||||||
@req = new MockRequest()
|
@req = new MockRequest()
|
||||||
|
|
||||||
@@ -66,6 +67,43 @@ describe "CollaboratorsController", ->
|
|||||||
it "should return a success code", ->
|
it "should return a success code", ->
|
||||||
@res.statusCode.should.equal 204
|
@res.statusCode.should.equal 204
|
||||||
|
|
||||||
|
describe "addUserToProject", ->
|
||||||
|
beforeEach ->
|
||||||
|
@req.params =
|
||||||
|
Project_id: @project_id = "project-id-123"
|
||||||
|
@req.body =
|
||||||
|
email: @email = "joe@example.com"
|
||||||
|
privileges: @privileges = "readAndWrite"
|
||||||
|
@res.json = sinon.stub()
|
||||||
|
@EditorController.addUserToProject = sinon.stub().callsArgWith(3, null, @user = {"mock": "user"})
|
||||||
|
@CollaboratorsController.addUserToProject @req, @res
|
||||||
|
|
||||||
|
it "should add the user to the project", ->
|
||||||
|
@EditorController.addUserToProject
|
||||||
|
.calledWith(@project_id, @email, @privileges)
|
||||||
|
.should.equal true
|
||||||
|
|
||||||
|
it "should send the back the added user", ->
|
||||||
|
@res.json.calledWith(user: @user).should.equal true
|
||||||
|
|
||||||
|
describe "removeUserFromProject", ->
|
||||||
|
beforeEach ->
|
||||||
|
@req.params =
|
||||||
|
Project_id: @project_id = "project-id-123"
|
||||||
|
user_id: @user_id = "user-id-123"
|
||||||
|
@res.send = sinon.stub()
|
||||||
|
@EditorController.removeUserFromProject = sinon.stub().callsArg(2)
|
||||||
|
@CollaboratorsController.removeUserFromProject @req, @res
|
||||||
|
|
||||||
|
it "should from the user from the project", ->
|
||||||
|
@EditorController.removeUserFromProject
|
||||||
|
.calledWith(@project_id, @user_id)
|
||||||
|
.should.equal true
|
||||||
|
|
||||||
|
it "should send the back a success response", ->
|
||||||
|
@res.send.calledWith(204).should.equal true
|
||||||
|
|
||||||
|
|
||||||
describe "_formatCollaborators", ->
|
describe "_formatCollaborators", ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
@owner =
|
@owner =
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ describe "CollaboratorsHandler", ->
|
|||||||
err:->
|
err:->
|
||||||
'../../models/User': User:@UserModel
|
'../../models/User': User:@UserModel
|
||||||
"../../models/Project": Project:@ProjectModel
|
"../../models/Project": Project:@ProjectModel
|
||||||
|
"../Email/EmailHandler": {}
|
||||||
|
|
||||||
@project_id = "123l2j13lkj"
|
@project_id = "123l2j13lkj"
|
||||||
@user_id = "132kj1lk2j"
|
@user_id = "132kj1lk2j"
|
||||||
|
|||||||
@@ -157,37 +157,3 @@ describe "EditorHttpController", ->
|
|||||||
|
|
||||||
it "should send back a success response", ->
|
it "should send back a success response", ->
|
||||||
@res.send.calledWith(204).should.equal true
|
@res.send.calledWith(204).should.equal true
|
||||||
|
|
||||||
describe "addUserToProject", ->
|
|
||||||
beforeEach ->
|
|
||||||
@req.params =
|
|
||||||
Project_id: @project_id
|
|
||||||
@req.body =
|
|
||||||
email: @email = "joe@example.com"
|
|
||||||
privileges: @privileges = "readAndWrite"
|
|
||||||
@EditorController.addUserToProject = sinon.stub().callsArgWith(3, null, @user = {"mock": "user"})
|
|
||||||
@EditorHttpController.addUserToProject @req, @res
|
|
||||||
|
|
||||||
it "should add the user to the project", ->
|
|
||||||
@EditorController.addUserToProject
|
|
||||||
.calledWith(@project_id, @email, @privileges)
|
|
||||||
.should.equal true
|
|
||||||
|
|
||||||
it "should send the back the added user", ->
|
|
||||||
@res.json.calledWith(user: @user).should.equal true
|
|
||||||
|
|
||||||
describe "removeUserFromProject", ->
|
|
||||||
beforeEach ->
|
|
||||||
@req.params =
|
|
||||||
Project_id: @project_id
|
|
||||||
user_id: @user_id = "user-id-123"
|
|
||||||
@EditorController.removeUserFromProject = sinon.stub().callsArg(2)
|
|
||||||
@EditorHttpController.removeUserFromProject @req, @res
|
|
||||||
|
|
||||||
it "should from the user from the project", ->
|
|
||||||
@EditorController.removeUserFromProject
|
|
||||||
.calledWith(@project_id, @user_id)
|
|
||||||
.should.equal true
|
|
||||||
|
|
||||||
it "should send the back a success response", ->
|
|
||||||
@res.send.calledWith(204).should.equal true
|
|
||||||
|
|||||||
Reference in New Issue
Block a user