SubscriptionGroupController.coffee 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. SubscriptionGroupHandler = require("./SubscriptionGroupHandler")
  2. logger = require("logger-sharelatex")
  3. SubscriptionLocator = require("./SubscriptionLocator")
  4. ErrorsController = require("../Errors/ErrorController")
  5. settings = require("settings-sharelatex")
  6. SubscriptionDomainHandler = require("./SubscriptionDomainHandler")
  7. _ = require("underscore")
  8. module.exports =
  9. addUserToGroup: (req, res)->
  10. adminUserId = req.session.user._id
  11. newEmail = req.body.email
  12. logger.log adminUserId:adminUserId, newEmail:newEmail, "adding user to group subscription"
  13. SubscriptionGroupHandler.addUserToGroup adminUserId, newEmail, (err, user)->
  14. result =
  15. user:user
  16. if err and err.limitReached
  17. result.limitReached = true
  18. res.json(result)
  19. removeUserFromGroup: (req, res)->
  20. adminUserId = req.session.user._id
  21. userToRemove_id = req.params.user_id
  22. logger.log adminUserId:adminUserId, userToRemove_id:userToRemove_id, "removing user from group subscription"
  23. SubscriptionGroupHandler.removeUserFromGroup adminUserId, userToRemove_id, ->
  24. res.send()
  25. renderSubscriptionGroupAdminPage: (req, res)->
  26. user_id = req.session.user._id
  27. SubscriptionLocator.getUsersSubscription user_id, (err, subscription)->
  28. if !subscription.groupPlan
  29. return res.redirect("/")
  30. SubscriptionGroupHandler.getPopulatedListOfMembers user_id, (err, users)->
  31. res.render "subscriptions/group_admin",
  32. title: 'group_admin'
  33. users: users
  34. subscription: subscription
  35. renderGroupInvitePage: (req, res)->
  36. subscription_id = req.params.subscription_id
  37. user_id = req.session.user._id
  38. licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)
  39. if !licence?
  40. return ErrorsController.notFound(req, res)
  41. SubscriptionGroupHandler.isUserPartOfGroup user_id, licence.subscription_id, (err, partOfGroup)->
  42. if partOfGroup
  43. return res.redirect("/user/subscription/custom_account")
  44. else
  45. res.render "subscriptions/group/invite",
  46. title: "Group Invitation"
  47. subscription_id:subscription_id
  48. licenceName:licence.name
  49. beginJoinGroup: (req, res)->
  50. subscription_id = req.params.subscription_id
  51. user_id = req.session.user._id
  52. licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)
  53. if !licence?
  54. return ErrorsController.notFound(req, res)
  55. SubscriptionGroupHandler.sendVerificationEmail subscription_id, licence.name, req.session.user.email, (err)->
  56. if err?
  57. res.sendStatus 500
  58. else
  59. res.sendStatus 200
  60. completeJoin: (req, res)->
  61. subscription_id = req.params.subscription_id
  62. if !SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)?
  63. return ErrorsController.notFound(req, res)
  64. email = req?.session?.user?.email
  65. logger.log subscription_id:subscription_id, user_id:req?.session?.user?._id, email:email, "starting the completion of joining group"
  66. SubscriptionGroupHandler.processGroupVerification email, subscription_id, req.query?.token, (err)->
  67. if err? and err == "token_not_found"
  68. res.redirect "/user/subscription/#{subscription_id}/group/invited?expired=true"
  69. else if err?
  70. res.sendStatus 500
  71. else
  72. res.redirect "/user/subscription/#{subscription_id}/group/successful-join"
  73. renderSuccessfulJoinPage: (req, res)->
  74. subscription_id = req.params.subscription_id
  75. licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)
  76. if !SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)?
  77. return ErrorsController.notFound(req, res)
  78. res.render "subscriptions/group/successful_join",
  79. title: "Sucessfully joined group"
  80. licenceName:licence.name
  81. exportGroupCsv: (req, res)->
  82. user_id = req.session.user._id
  83. logger.log user_id: user_id, "exporting group csv"
  84. SubscriptionLocator.getUsersSubscription user_id, (err, subscription)->
  85. if !subscription.groupPlan
  86. return res.redirect("/")
  87. SubscriptionGroupHandler.getPopulatedListOfMembers user_id, (err, users)->
  88. groupCsv = ""
  89. for user in users
  90. groupCsv += user.email + "\n"
  91. res.header(
  92. "Content-Disposition",
  93. "attachment; filename=Group.csv"
  94. )
  95. res.contentType('text/csv')
  96. res.send(groupCsv)