|
|
@@ -5,8 +5,7 @@ ProjectController = require("./controllers/ProjectController")
|
|
|
ProjectApiController = require("./Features/Project/ProjectApiController")
|
|
|
InfoController = require('./controllers/InfoController')
|
|
|
SpellingController = require('./Features/Spelling/SpellingController')
|
|
|
-CollaberationManager = require('./managers/CollaberationManager')
|
|
|
-SecutiryManager = require('./managers/SecurityManager')
|
|
|
+SecurityManager = require('./managers/SecurityManager')
|
|
|
AuthorizationManager = require('./Features/Security/AuthorizationManager')
|
|
|
versioningController = require("./Features/Versioning/VersioningApiController")
|
|
|
EditorController = require("./Features/Editor/EditorController")
|
|
|
@@ -46,9 +45,7 @@ module.exports = class Router
|
|
|
constructor: (app, io, socketSessions)->
|
|
|
app.use(app.router)
|
|
|
|
|
|
- collaberationManager = new CollaberationManager(io)
|
|
|
-
|
|
|
- Project = new ProjectController(collaberationManager)
|
|
|
+ Project = new ProjectController()
|
|
|
projectHandler = new ProjectHandler()
|
|
|
|
|
|
app.get '/', HomeController.index
|
|
|
@@ -56,16 +53,16 @@ module.exports = class Router
|
|
|
app.get '/login', UserController.loginForm
|
|
|
app.post '/login', AuthenticationController.login
|
|
|
app.get '/logout', UserController.logout
|
|
|
- app.get '/restricted', SecutiryManager.restricted
|
|
|
-
|
|
|
- app.get '/resources', HomeController.resources
|
|
|
- app.get '/comments', HomeController.comments
|
|
|
- app.get '/tos', HomeController.tos
|
|
|
- app.get '/about', HomeController.about
|
|
|
- app.get '/attribution', HomeController.attribution
|
|
|
- app.get '/security', HomeController.security
|
|
|
- app.get '/privacy_policy', HomeController.privacy
|
|
|
- app.get '/planned_maintenance', HomeController.planned_maintenance
|
|
|
+ app.get '/restricted', SecurityManager.restricted
|
|
|
+
|
|
|
+ app.get '/resources', HomeController.externalPage("resources", "LaTeX Resources")
|
|
|
+ app.get '/tos', HomeController.externalPage("tos", "Terms of Service")
|
|
|
+ app.get '/about', HomeController.externalPage("about", "About Us")
|
|
|
+ app.get '/attribution', HomeController.externalPage("attribution", "Attribution")
|
|
|
+ app.get '/security', HomeController.externalPage("security", "Security")
|
|
|
+ app.get '/privacy_policy', HomeController.externalPage("privacy", "Privacy Policy")
|
|
|
+ app.get '/planned_maintenance', HomeController.externalPage("planned_mainteance", "Planned Maintenance")
|
|
|
+
|
|
|
app.get '/themes', InfoController.themes
|
|
|
app.get '/advisor', InfoController.advisor
|
|
|
app.get '/dropbox', InfoController.dropbox
|
|
|
@@ -99,13 +96,10 @@ module.exports = class Router
|
|
|
app.post '/project/new', AuthenticationController.requireLogin(), Project.apiNewProject
|
|
|
app.get '/project/new/template', TemplatesMiddlewear.saveTemplateDataInSession, AuthenticationController.requireLogin(), TemplatesController.createProjectFromZipTemplate
|
|
|
|
|
|
- app.get '/Project/:Project_id', SecutiryManager.requestCanAccessProject, Project.loadEditor
|
|
|
- app.get '/Project/:Project_id/file/:File_id', SecutiryManager.requestCanAccessProject, FileStoreController.getFile
|
|
|
+ app.get '/Project/:Project_id', SecurityManager.requestCanAccessProject, Project.loadEditor
|
|
|
+ app.get '/Project/:Project_id/file/:File_id', SecurityManager.requestCanAccessProject, FileStoreController.getFile
|
|
|
|
|
|
- # This is left for legacy reasons and can be removed once all editors have had a chance to refresh:
|
|
|
- app.get '/Project/:Project_id/download/pdf', SecutiryManager.requestCanAccessProject, CompileController.downloadPdf
|
|
|
-
|
|
|
- app.get '/Project/:Project_id/output/output.pdf', SecutiryManager.requestCanAccessProject, CompileController.downloadPdf
|
|
|
+ app.get '/Project/:Project_id/output/output.pdf', SecurityManager.requestCanAccessProject, CompileController.downloadPdf
|
|
|
app.get /^\/project\/([^\/]*)\/output\/(.*)$/,
|
|
|
((req, res, next) ->
|
|
|
params =
|
|
|
@@ -113,25 +107,26 @@ module.exports = class Router
|
|
|
"file": req.params[1]
|
|
|
req.params = params
|
|
|
next()
|
|
|
- ), SecutiryManager.requestCanAccessProject, CompileController.getFileFromClsi
|
|
|
+ ), SecurityManager.requestCanAccessProject, CompileController.getFileFromClsi
|
|
|
+ app.del "/project/:Project_id/output", SecurityManager.requestCanAccessProject, CompileController.deleteAuxFiles
|
|
|
|
|
|
- app.del '/Project/:Project_id', SecutiryManager.requestIsOwner, Project.deleteProject
|
|
|
- app.post '/Project/:Project_id/clone', SecutiryManager.requestCanAccessProject, Project.cloneProject
|
|
|
+ app.del '/Project/:Project_id', SecurityManager.requestIsOwner, Project.deleteProject
|
|
|
+ app.post '/Project/:Project_id/clone', SecurityManager.requestCanAccessProject, Project.cloneProject
|
|
|
|
|
|
- app.post '/Project/:Project_id/snapshot', SecutiryManager.requestCanModifyProject, versioningController.takeSnapshot
|
|
|
- app.get '/Project/:Project_id/version', SecutiryManager.requestCanAccessProject, versioningController.listVersions
|
|
|
- app.get '/Project/:Project_id/version/:Version_id', SecutiryManager.requestCanAccessProject, versioningController.getVersion
|
|
|
- app.get '/Project/:Project_id/version', SecutiryManager.requestCanAccessProject, versioningController.listVersions
|
|
|
- app.get '/Project/:Project_id/version/:Version_id', SecutiryManager.requestCanAccessProject, versioningController.getVersion
|
|
|
+ app.post '/Project/:Project_id/snapshot', SecurityManager.requestCanModifyProject, versioningController.takeSnapshot
|
|
|
+ app.get '/Project/:Project_id/version', SecurityManager.requestCanAccessProject, versioningController.listVersions
|
|
|
+ app.get '/Project/:Project_id/version/:Version_id', SecurityManager.requestCanAccessProject, versioningController.getVersion
|
|
|
+ app.get '/Project/:Project_id/version', SecurityManager.requestCanAccessProject, versioningController.listVersions
|
|
|
+ app.get '/Project/:Project_id/version/:Version_id', SecurityManager.requestCanAccessProject, versioningController.getVersion
|
|
|
|
|
|
- app.get "/project/:Project_id/updates", SecutiryManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
|
|
- app.get "/project/:Project_id/doc/:doc_id/diff", SecutiryManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
|
|
- app.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", SecutiryManager.requestCanAccessProject, TrackChangesController.proxyToTrackChangesApi
|
|
|
+ app.get "/project/:Project_id/updates", 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/leave', AuthenticationController.requireLogin(), CollaboratorsController.removeSelfFromProject
|
|
|
- app.get '/project/:Project_id/collaborators', SecutiryManager.requestCanAccessProject(allow_auth_token: true), CollaboratorsController.getCollaborators
|
|
|
+ app.get '/project/:Project_id/collaborators', SecurityManager.requestCanAccessProject(allow_auth_token: true), CollaboratorsController.getCollaborators
|
|
|
|
|
|
- app.get '/Project/:Project_id/download/zip', SecutiryManager.requestCanAccessProject, ProjectDownloadsController.downloadProject
|
|
|
+ app.get '/Project/:Project_id/download/zip', SecurityManager.requestCanAccessProject, ProjectDownloadsController.downloadProject
|
|
|
|
|
|
|
|
|
app.get '/tag', AuthenticationController.requireLogin(), TagsController.getAllTags
|
|
|
@@ -164,21 +159,21 @@ module.exports = class Router
|
|
|
req.params = params
|
|
|
next()
|
|
|
),
|
|
|
- SecutiryManager.requestCanAccessProject, versioningController.getVersionFile
|
|
|
+ SecurityManager.requestCanAccessProject, versioningController.getVersionFile
|
|
|
|
|
|
app.post "/spelling/check", AuthenticationController.requireLogin(), SpellingController.proxyRequestToSpellingApi
|
|
|
app.post "/spelling/learn", AuthenticationController.requireLogin(), SpellingController.proxyRequestToSpellingApi
|
|
|
|
|
|
#Admin Stuff
|
|
|
- app.get '/admin', SecutiryManager.requestIsAdmin, AdminController.index
|
|
|
- app.post '/admin/closeEditor', SecutiryManager.requestIsAdmin, AdminController.closeEditor
|
|
|
- app.post '/admin/dissconectAllUsers', SecutiryManager.requestIsAdmin, AdminController.dissconectAllUsers
|
|
|
- app.post '/admin/writeAllDocsToMongo', SecutiryManager.requestIsAdmin, AdminController.writeAllToMongo
|
|
|
- app.post '/admin/addquote', SecutiryManager.requestIsAdmin, AdminController.addQuote
|
|
|
- app.post '/admin/syncUserToSubscription', SecutiryManager.requestIsAdmin, AdminController.syncUserToSubscription
|
|
|
- app.post '/admin/flushProjectToTpds', SecutiryManager.requestIsAdmin, AdminController.flushProjectToTpds
|
|
|
- app.post '/admin/pollUsersWithDropbox', SecutiryManager.requestIsAdmin, AdminController.pollUsersWithDropbox
|
|
|
- app.post '/admin/updateProjectCompiler', SecutiryManager.requestIsAdmin, AdminController.updateProjectCompiler
|
|
|
+ app.get '/admin', SecurityManager.requestIsAdmin, AdminController.index
|
|
|
+ app.post '/admin/closeEditor', SecurityManager.requestIsAdmin, AdminController.closeEditor
|
|
|
+ app.post '/admin/dissconectAllUsers', SecurityManager.requestIsAdmin, AdminController.dissconectAllUsers
|
|
|
+ app.post '/admin/writeAllDocsToMongo', SecurityManager.requestIsAdmin, AdminController.writeAllToMongo
|
|
|
+ app.post '/admin/addquote', SecurityManager.requestIsAdmin, AdminController.addQuote
|
|
|
+ app.post '/admin/syncUserToSubscription', SecurityManager.requestIsAdmin, AdminController.syncUserToSubscription
|
|
|
+ app.post '/admin/flushProjectToTpds', SecurityManager.requestIsAdmin, AdminController.flushProjectToTpds
|
|
|
+ app.post '/admin/pollUsersWithDropbox', SecurityManager.requestIsAdmin, AdminController.pollUsersWithDropbox
|
|
|
+ app.post '/admin/updateProjectCompiler', SecurityManager.requestIsAdmin, AdminController.updateProjectCompiler
|
|
|
|
|
|
app.get '/perfTest', (req,res)->
|
|
|
res.send("hello")
|
|
|
@@ -190,7 +185,7 @@ module.exports = class Router
|
|
|
|
|
|
app.get '/health_check', HealthCheckController.check
|
|
|
|
|
|
- app.get "/status/compiler/:Project_id", SecutiryManager.requestCanAccessProject, (req, res) ->
|
|
|
+ app.get "/status/compiler/:Project_id", SecurityManager.requestCanAccessProject, (req, res) ->
|
|
|
sendRes = _.once (statusCode, message)->
|
|
|
res.writeHead statusCode
|
|
|
res.end message
|
|
|
@@ -293,15 +288,15 @@ module.exports = class Router
|
|
|
|
|
|
client.on 'renameEntity', (entity_id, entityType, newName, callback)->
|
|
|
AuthorizationManager.ensureClientCanEditProject client, (error, project_id) =>
|
|
|
- collaberationManager.renameEntity(project_id, entity_id, entityType, newName, callback)
|
|
|
+ EditorController.renameEntity(project_id, entity_id, entityType, newName, callback)
|
|
|
|
|
|
client.on 'moveEntity', (entity_id, folder_id, entityType, callback)->
|
|
|
AuthorizationManager.ensureClientCanEditProject client, (error, project_id) =>
|
|
|
- collaberationManager.moveEntity(project_id, entity_id, folder_id, entityType, callback)
|
|
|
+ EditorController.moveEntity(project_id, entity_id, folder_id, entityType, callback)
|
|
|
|
|
|
client.on 'setProjectName', (window_id, newName, callback)->
|
|
|
AuthorizationManager.ensureClientCanEditProject client, (error, project_id) =>
|
|
|
- collaberationManager.renameProject(project_id, window_id, newName, callback)
|
|
|
+ EditorController.renameProject(project_id, window_id, newName, callback)
|
|
|
|
|
|
client.on 'getProject',(callback)->
|
|
|
AuthorizationManager.ensureClientCanViewProject client, (error, project_id) =>
|
|
|
@@ -309,15 +304,15 @@ module.exports = class Router
|
|
|
|
|
|
client.on 'setRootDoc', (newRootDocID, callback)->
|
|
|
AuthorizationManager.ensureClientCanEditProject client, (error, project_id) =>
|
|
|
- collaberationManager.setRootDoc(project_id, newRootDocID, callback)
|
|
|
+ EditorController.setRootDoc(project_id, newRootDocID, callback)
|
|
|
|
|
|
client.on 'deleteProject', (callback)->
|
|
|
AuthorizationManager.ensureClientCanAdminProject client, (error, project_id) =>
|
|
|
- collaberationManager.deleteProject(project_id, callback)
|
|
|
+ EditorController.deleteProject(project_id, callback)
|
|
|
|
|
|
client.on 'setPublicAccessLevel', (newAccessLevel, callback)->
|
|
|
AuthorizationManager.ensureClientCanAdminProject client, (error, project_id) =>
|
|
|
- collaberationManager.setPublicAccessLevel(project_id, newAccessLevel, callback)
|
|
|
+ EditorController.setPublicAccessLevel(project_id, newAccessLevel, callback)
|
|
|
|
|
|
client.on 'pdfProject', (opts, callback)->
|
|
|
AuthorizationManager.ensureClientCanViewProject client, (error, project_id) =>
|
|
|
@@ -328,10 +323,6 @@ module.exports = class Router
|
|
|
AuthorizationManager.ensureClientCanViewProject client, (error, project_id) =>
|
|
|
CompileManager.getLogLines project_id, callback
|
|
|
|
|
|
- client.on 'distributMessage', (message)->
|
|
|
- AuthorizationManager.ensureClientCanViewProject client, (error, project_id) =>
|
|
|
- collaberationManager.distributMessage project_id, client, message
|
|
|
-
|
|
|
client.on 'changeUsersPrivlageLevel', (user_id, newPrivalageLevel)->
|
|
|
AuthorizationManager.ensureClientCanAdminProject client, (error, project_id) =>
|
|
|
projectHandler.changeUsersPrivlageLevel project_id, user_id, newPrivalageLevel
|