UserInfoController.coffee 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. UserGetter = require "./UserGetter"
  2. logger = require("logger-sharelatex")
  3. UserDeleter = require("./UserDeleter")
  4. UserUpdater = require("./UserUpdater")
  5. sanitize = require('sanitizer')
  6. module.exports = UserController =
  7. getLoggedInUsersPersonalInfo: (req, res, next = (error) ->) ->
  8. # this is funcky as hell, we don't use the current session to get the user
  9. # we use the auth token, actually destroying session from the chat api request
  10. req.session.destroy()
  11. logger.log user: req.user, "reciving request for getting logged in users personal info"
  12. return next(new Error("User is not logged in")) if !req.user?
  13. UserController.sendFormattedPersonalInfo(req.user, res, next)
  14. getPersonalInfo: (req, res, next = (error) ->) ->
  15. UserGetter.getUser req.params.user_id, { _id: true, first_name: true, last_name: true, email: true }, (error, user) ->
  16. logger.log user: req.params.user_id, "reciving request for getting users personal info"
  17. return next(error) if error?
  18. return res.send(404) if !user?
  19. UserController.sendFormattedPersonalInfo(user, res, next)
  20. req.session.destroy()
  21. updatePersonalInfo: (req, res, next = (error)->) ->
  22. {first_name, last_name, role, institution} = req.body
  23. update =
  24. first_name:sanitize.escape(first_name)
  25. last_name:sanitize.escape(last_name)
  26. role:sanitize.escape(role)
  27. institution:sanitize.escape(institution)
  28. UserUpdater.updatePersonalInfo req.session.user._id, update, (err)->
  29. if err?
  30. res.send 500
  31. else
  32. res.send 204
  33. sendFormattedPersonalInfo: (user, res, next = (error) ->) ->
  34. UserController._formatPersonalInfo user, (error, info) ->
  35. return next(error) if error?
  36. res.send JSON.stringify(info)
  37. _formatPersonalInfo: (user, callback = (error, info) ->) ->
  38. callback null, {
  39. id: user._id.toString()
  40. first_name: user.first_name
  41. last_name: user.last_name
  42. email: user.email
  43. signUpDate: user.signUpDate
  44. }