SubscriptionGroupController.coffee 5.0 KB

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