BetaProgramController.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. const BetaProgramHandler = require('./BetaProgramHandler')
  2. const OError = require('@overleaf/o-error')
  3. const UserGetter = require('../User/UserGetter')
  4. const Settings = require('@overleaf/settings')
  5. const logger = require('@overleaf/logger')
  6. const SessionManager = require('../Authentication/SessionManager')
  7. const SplitTestHandler = require('../SplitTests/SplitTestHandler')
  8. const BetaProgramController = {
  9. optIn(req, res, next) {
  10. const userId = SessionManager.getLoggedInUserId(req.session)
  11. logger.debug({ userId }, 'user opting in to beta program')
  12. if (userId == null) {
  13. return next(new Error('no user id in session'))
  14. }
  15. BetaProgramHandler.optIn(userId, function (err) {
  16. if (err) {
  17. return next(err)
  18. }
  19. SplitTestHandler.sessionMaintenance(req, null, () =>
  20. res.redirect('/beta/participate')
  21. )
  22. })
  23. },
  24. optOut(req, res, next) {
  25. const userId = SessionManager.getLoggedInUserId(req.session)
  26. logger.debug({ userId }, 'user opting out of beta program')
  27. if (userId == null) {
  28. return next(new Error('no user id in session'))
  29. }
  30. BetaProgramHandler.optOut(userId, function (err) {
  31. if (err) {
  32. return next(err)
  33. }
  34. SplitTestHandler.sessionMaintenance(req, null, () =>
  35. res.redirect('/beta/participate')
  36. )
  37. })
  38. },
  39. optInPage(req, res, next) {
  40. const userId = SessionManager.getLoggedInUserId(req.session)
  41. logger.debug({ userId }, 'showing beta participation page for user')
  42. UserGetter.getUser(userId, { betaProgram: 1 }, function (err, user) {
  43. if (err) {
  44. OError.tag(err, 'error fetching user', {
  45. userId,
  46. })
  47. return next(err)
  48. }
  49. res.render('beta_program/opt_in', {
  50. title: 'sharelatex_beta_program',
  51. user,
  52. languages: Settings.languages,
  53. })
  54. })
  55. },
  56. }
  57. module.exports = BetaProgramController