UserInfoController.coffee 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. if req.query?.auth_token?
  11. req.session.destroy()
  12. logger.log user: req.user, "reciving request for getting logged in users personal info"
  13. return next(new Error("User is not logged in")) if !req.user?
  14. UserGetter.getUser req.session.user._id, { first_name: true, last_name: true, role:true, institution:true }, (error, user) ->
  15. UserController.sendFormattedPersonalInfo(user, res, next)
  16. getPersonalInfo: (req, res, next = (error) ->) ->
  17. UserGetter.getUser req.params.user_id, { _id: true, first_name: true, last_name: true, email: true}, (error, user) ->
  18. logger.log user_id: req.params.user_id, "reciving request for getting users personal info"
  19. console.log user
  20. return next(error) if error?
  21. return res.send(404) if !user?
  22. UserController.sendFormattedPersonalInfo(user, res, next)
  23. req.session.destroy()
  24. updatePersonalInfo: (req, res, next = (error)->) ->
  25. {first_name, last_name, role, institution} = req.body
  26. user_id = req.session.user._id
  27. logger.log data:req.body, user_id:user_id, "getting update for user personal info"
  28. update =
  29. first_name:sanitize.escape(first_name)
  30. last_name:sanitize.escape(last_name)
  31. role:sanitize.escape(role)
  32. institution:sanitize.escape(institution)
  33. UserUpdater.updatePersonalInfo user_id, update, (err)->
  34. if err?
  35. res.send 500
  36. else
  37. res.send 204
  38. sendFormattedPersonalInfo: (user, res, next = (error) ->) ->
  39. UserController._formatPersonalInfo user, (error, info) ->
  40. return next(error) if error?
  41. console.log info
  42. res.send JSON.stringify(info)
  43. _formatPersonalInfo: (user, callback = (error, info) ->) ->
  44. callback null, {
  45. id: user._id.toString()
  46. first_name: user.first_name
  47. last_name: user.last_name
  48. email: user.email
  49. signUpDate: user.signUpDate
  50. role: user.role
  51. institution: user.institution
  52. }