ProjectController.coffee 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. async = require("async")
  2. logger = require("logger-sharelatex")
  3. projectDeleter = require("./ProjectDeleter")
  4. projectDuplicator = require("./ProjectDuplicator")
  5. projectCreationHandler = require("./ProjectCreationHandler")
  6. metrics = require('../../infrastructure/Metrics')
  7. sanitize = require('sanitizer')
  8. module.exports =
  9. deleteProject: (req, res)->
  10. project_id = req.params.Project_id
  11. logger.log project_id:project_id, "deleting project"
  12. projectDeleter.deleteProject project_id, (err)->
  13. if err?
  14. res.send 500
  15. else
  16. res.send 200
  17. cloneProject: (req, res)->
  18. metrics.inc "cloned-project"
  19. project_id = req.params.Project_id
  20. projectName = req.body.projectName
  21. logger.log project_id:project_id, projectName:projectName, "cloning project"
  22. if !req.session.user?
  23. return res.send redir:"/register"
  24. projectDuplicator.duplicate req.session.user, project_id, projectName, (err, project)->
  25. if err?
  26. logger.error err:err, project_id: project_id, user_id: req.session.user._id, "error cloning project"
  27. return next(err)
  28. res.send(project_id:project._id)
  29. newProject: (req, res)->
  30. user = req.session.user
  31. projectName = sanitize.escape(req.body.projectName)
  32. template = sanitize.escape(req.body.template)
  33. logger.log user: user, type: template, name: projectName, "creating project"
  34. async.waterfall [
  35. (cb)->
  36. if template == 'example'
  37. projectCreationHandler.createExampleProject user._id, projectName, cb
  38. else
  39. projectCreationHandler.createBasicProject user._id, projectName, cb
  40. ], (err, project)->
  41. if err?
  42. logger.error err: err, project: project, user: user, name: projectName, type: template, "error creating project"
  43. res.send 500
  44. else
  45. logger.log project: project, user: user, name: projectName, type: template, "created project"
  46. res.send {project_id:project._id}