UserController.coffee 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. UserDeleter = require("./UserDeleter")
  2. UserLocator = require("./UserLocator")
  3. User = require("../../models/User").User
  4. newsLetterManager = require('../Newsletter/NewsletterManager')
  5. sanitize = require('sanitizer')
  6. UserRegistrationHandler = require("./UserRegistrationHandler")
  7. logger = require("logger-sharelatex")
  8. metrics = require("../../infrastructure/Metrics")
  9. Url = require("url")
  10. AuthenticationController = require("../Authentication/AuthenticationController")
  11. module.exports =
  12. deleteUser: (req, res)->
  13. user_id = req.session.user._id
  14. UserDeleter.deleteUser user_id, (err)->
  15. if !err?
  16. req.session.destroy()
  17. res.send(200)
  18. unsubscribe: (req, res)->
  19. UserLocator.findById req.session.user._id, (err, user)->
  20. newsLetterManager.unsubscribe user, ->
  21. res.send()
  22. updateUserSettings : (req, res)->
  23. logger.log user: req.session.user, "updating account settings"
  24. User.findById req.session.user._id, (err, user)->
  25. if err? or !user?
  26. logger.err err:err, user_id:req.session.user._id, "problem updaing user settings"
  27. return res.send 500
  28. user.first_name = sanitize.escape(req.body.first_name).trim()
  29. user.last_name = sanitize.escape(req.body.last_name).trim()
  30. user.ace.mode = sanitize.escape(req.body.mode).trim()
  31. user.ace.theme = sanitize.escape(req.body.theme).trim()
  32. user.ace.fontSize = sanitize.escape(req.body.fontSize).trim()
  33. user.ace.autoComplete = req.body.autoComplete == "true"
  34. user.ace.spellCheckLanguage = req.body.spellCheckLanguage
  35. user.ace.pdfViewer = req.body.pdfViewer
  36. user.save ->
  37. res.send()
  38. logout : (req, res)->
  39. metrics.inc "user.logout"
  40. logger.log user: req?.session?.user, "logging out"
  41. req.session.destroy (err)->
  42. if err
  43. logger.err err: err, 'error destorying session'
  44. res.redirect '/login'
  45. register : (req, res, next = (error) ->)->
  46. logger.log email: req.body.email, "attempted register"
  47. redir = Url.parse(req.body.redir or "/project").path
  48. UserRegistrationHandler.registerNewUser req.body, (err, user)->
  49. console.log err
  50. if err == "EmailAlreadyRegisterd"
  51. return AuthenticationController.login req, res
  52. else if err?
  53. next(err)
  54. else
  55. metrics.inc "user.register.success"
  56. req.session.user = user
  57. req.session.justRegistered = true
  58. res.send
  59. redir:redir
  60. id:user._id.toString()
  61. first_name: user.first_name
  62. last_name: user.last_name
  63. email: user.email
  64. created: Date.now()