UserPagesController.coffee 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. UserLocator = require("./UserLocator")
  2. UserGetter = require("./UserGetter")
  3. UserSessionsManager = require("./UserSessionsManager")
  4. ErrorController = require("../Errors/ErrorController")
  5. logger = require("logger-sharelatex")
  6. Settings = require("settings-sharelatex")
  7. fs = require('fs')
  8. AuthenticationController = require('../Authentication/AuthenticationController')
  9. module.exports =
  10. registerPage : (req, res)->
  11. sharedProjectData =
  12. project_name:req.query.project_name
  13. user_first_name:req.query.user_first_name
  14. newTemplateData = {}
  15. if req.session.templateData?
  16. newTemplateData.templateName = req.session.templateData.templateName
  17. res.render 'user/register',
  18. title: 'register'
  19. redir: req.query.redir
  20. sharedProjectData: sharedProjectData
  21. newTemplateData: newTemplateData
  22. new_email:req.query.new_email || ""
  23. activateAccountPage: (req, res) ->
  24. # An 'activation' is actually just a password reset on an account that
  25. # was set with a random password originally.
  26. logger.log query:req.query, "activiate account page called"
  27. if !req.query?.user_id? or !req.query?.token?
  28. return ErrorController.notFound(req, res)
  29. UserGetter.getUser req.query.user_id, {email: 1, loginCount: 1}, (error, user) ->
  30. return next(error) if error?
  31. if !user
  32. return ErrorController.notFound(req, res)
  33. if user.loginCount > 0
  34. logger.log user:user, "user has already logged in so is active, sending them to /login"
  35. # Already seen this user, so account must be activate
  36. # This lets users keep clicking the 'activate' link in their email
  37. # as a way to log in which, if I know our users, they will.
  38. res.redirect "/login?email=#{encodeURIComponent(user.email)}"
  39. else
  40. res.render 'user/activate',
  41. title: 'activate_account'
  42. email: user.email,
  43. token: req.query.token
  44. loginPage : (req, res)->
  45. res.render 'user/login',
  46. title: 'login',
  47. redir: req.query.redir,
  48. email: req.query.email
  49. settingsPage : (req, res, next)->
  50. user_id = AuthenticationController.getLoggedInUserId(req)
  51. logger.log user: user_id, "loading settings page"
  52. shouldAllowEditingDetails = !(Settings?.ldap?.updateUserDetailsOnLogin) and !(Settings?.saml?.updateUserDetailsOnLogin)
  53. UserLocator.findById user_id, (err, user)->
  54. return next(err) if err?
  55. res.render 'user/settings',
  56. title:'account_settings'
  57. user: user,
  58. shouldAllowEditingDetails: shouldAllowEditingDetails
  59. languages: Settings.languages,
  60. accountSettingsTabActive: true
  61. sessionsPage: (req, res, next) ->
  62. user = AuthenticationController.getSessionUser(req)
  63. logger.log user_id: user._id, "loading sessions page"
  64. UserSessionsManager.getAllUserSessions user, [req.sessionID], (err, sessions) ->
  65. if err?
  66. logger.err {user_id: user._id}, "error getting all user sessions"
  67. return next(err)
  68. res.render 'user/sessions',
  69. title: "sessions"
  70. sessions: sessions