UserInfoController.coffee 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. UserGetter = require "./UserGetter"
  2. logger = require("logger-sharelatex")
  3. UserDeleter = require("./UserDeleter")
  4. UserUpdater = require("./UserUpdater")
  5. sanitize = require('sanitizer')
  6. AuthenticationController = require('../Authentication/AuthenticationController')
  7. ObjectId = require("mongojs").ObjectId
  8. module.exports = UserController =
  9. getLoggedInUsersPersonalInfo: (req, res, next = (error) ->) ->
  10. user_id = AuthenticationController.getLoggedInUserId(req)
  11. logger.log user_id: user_id, "reciving request for getting logged in users personal info"
  12. return next(new Error("User is not logged in")) if !user_id?
  13. UserGetter.getUser user_id, {
  14. first_name: true, last_name: true,
  15. role:true, institution:true,
  16. email: true, signUpDate: true
  17. }, (error, user) ->
  18. return next(error) if error?
  19. UserController.sendFormattedPersonalInfo(user, res, next)
  20. getPersonalInfo: (req, res, next = (error) ->) ->
  21. {user_id} = req.params
  22. if user_id.match(/^\d+$/)
  23. query = { "overleaf.id": parseInt(user_id, 10) }
  24. else if user_id.match(/^[a-f0-9]{24}$/)
  25. query = { _id: ObjectId(user_id) }
  26. else
  27. return res.send(400)
  28. UserGetter.getUser query, { _id: true, first_name: true, last_name: true, email: true}, (error, user) ->
  29. logger.log user_id: req.params.user_id, "receiving request for getting users personal info"
  30. return next(error) if error?
  31. return res.send(404) if !user?
  32. UserController.sendFormattedPersonalInfo(user, res, next)
  33. sendFormattedPersonalInfo: (user, res, next = (error) ->) ->
  34. info = UserController.formatPersonalInfo(user)
  35. res.send JSON.stringify(info)
  36. formatPersonalInfo: (user, callback = (error, info) ->) ->
  37. if !user?
  38. return {}
  39. formatted_user = { id: user._id.toString() }
  40. for key in ["first_name", "last_name", "email", "signUpDate", "role", "institution"]
  41. if user[key]?
  42. formatted_user[key] = user[key]
  43. return formatted_user