SubscriptionGroupController.coffee 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. SubscriptionGroupHandler = require("./SubscriptionGroupHandler")
  2. logger = require("logger-sharelatex")
  3. SubscriptionLocator = require("./SubscriptionLocator")
  4. settings = require("settings-sharelatex")
  5. OneTimeTokenHandler = require("../Security/OneTimeTokenHandler")
  6. EmailHandler = require("../Email/EmailHandler")
  7. SubscriptionDomainAllocator = require("./SubscriptionDomainAllocator")
  8. _ = require("underscore")
  9. module.exports =
  10. addUserToGroup: (req, res)->
  11. adminUserId = req.session.user._id
  12. newEmail = req.body.email
  13. logger.log adminUserId:adminUserId, newEmail:newEmail, "adding user to group subscription"
  14. SubscriptionGroupHandler.addUserToGroup adminUserId, newEmail, (err, user)->
  15. result =
  16. user:user
  17. if err and err.limitReached
  18. result.limitReached = true
  19. res.json(result)
  20. removeUserFromGroup: (req, res)->
  21. adminUserId = req.session.user._id
  22. userToRemove_id = req.params.user_id
  23. logger.log adminUserId:adminUserId, userToRemove_id:userToRemove_id, "removing user from group subscription"
  24. SubscriptionGroupHandler.removeUserFromGroup adminUserId, userToRemove_id, ->
  25. res.send()
  26. renderSubscriptionGroupAdminPage: (req, res)->
  27. user_id = req.session.user._id
  28. SubscriptionLocator.getUsersSubscription user_id, (err, subscription)->
  29. if !subscription.groupPlan
  30. return res.redirect("/")
  31. SubscriptionGroupHandler.getPopulatedListOfMembers user_id, (err, users)->
  32. res.render "subscriptions/group_admin",
  33. title: 'group_admin'
  34. users: users
  35. subscription: subscription
  36. renderGroupInvitePage: (req, res)->
  37. subscription_id = req.params.subscription_id
  38. licence = SubscriptionDomainAllocator.findDomainLicenceBySubscriptionId(subscription_id)
  39. SubscriptionGroupHandler.getPopulatedListOfMembers licence.adminUser_id, (err, users)->
  40. userInSubscription = _.find users, (user)-> user._id == req.session.user._id
  41. if userInSubscription?
  42. return res.redirect("/user/subscription/custom_account")
  43. res.render "subscriptions/group/invite",
  44. title: "Group Invitation"
  45. subscription_id:subscription_id
  46. licenceName:licence.name
  47. beginJoinGroup: (req, res)->
  48. subscription_id = req.params.subscription_id
  49. user_id = req.session.user._id
  50. licence = SubscriptionDomainAllocator.findDomainLicenceBySubscriptionId(subscription_id)
  51. if !licence?
  52. res.send 500
  53. OneTimeTokenHandler.getNewToken subscription_id, (err, token)->
  54. opts =
  55. to : req.session.user.email
  56. group_name: licence.name
  57. completeJoinUrl: "#{settings.siteUrl}/user/subscription/#{subscription_id}/group/complete-join?token=#{token}"
  58. EmailHandler.sendEmail "completeJoinGroupAccount", opts, ->
  59. res.send 200
  60. completeJoin: (req, res)->
  61. subscription_id = req.params.subscription_id
  62. OneTimeTokenHandler.getValueFromTokenAndExpire req.query.token, (err, token_subscription_id)->
  63. console.log token_subscription_id
  64. if err? or subscription_id != token_subscription_id
  65. return res.send 403
  66. SubscriptionLocator.getSubscription subscription_id, (err, subscription)->
  67. SubscriptionGroupHandler.addUserToGroup subscription.admin_id, req.user.email, (err, user)->
  68. res.redirect "#{settings.siteUrl}/user/subscription/#{subscription_id}/group/successful-join"
  69. renderSuccessfulJoinPage: (req, res)->
  70. subscription_id = req.params.subscription_id
  71. licence = SubscriptionDomainAllocator.findDomainLicenceBySubscriptionId(subscription_id)
  72. res.render "subscriptions/group/successful_join",
  73. title: "Sucessfully joined group"
  74. licenceName:licence.name