UserPagesController.coffee 3.2 KB

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