SubscriptionGroupController.coffee 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. 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. licence = SubscriptionDomainAllocator.findDomainLicenceBySubscriptionId(subscription_id)
  38. res.render "subscriptions/group/invite",
  39. title: "Group Invitation"
  40. subscription_id:subscription_id
  41. licenceName:licence.name
  42. beginJoinGroup: (req, res)->
  43. subscription_id = req.params.subscription_id
  44. user_id = req.session.user._id
  45. licence = SubscriptionDomainAllocator.findDomainLicenceBySubscriptionId(subscription_id)
  46. if !licence?
  47. res.send 500
  48. OneTimeTokenHandler.getNewToken subscription_id, (err, token)->
  49. opts =
  50. to : req.session.user.email
  51. group_name: licence.name
  52. completeJoinUrl: "#{settings.siteUrl}/user/subscription/#{subscription_id}/group/complete_join?token=#{token}"
  53. EmailHandler.sendEmail "completeJoinGroupAccount", opts, ->
  54. res.send 200
  55. completeJoin: (req, res)->
  56. subscription_id = req.params.subscription_id
  57. OneTimeTokenHandler.getValueFromTokenAndExpire req.query.token, (err, token_subscription_id)->
  58. console.log token_subscription_id
  59. if err? or subscription_id != token_subscription_id
  60. return res.send 403
  61. SubscriptionLocator.getSubscription subscription_id, (err, subscription)->
  62. SubscriptionGroupHandler.addUserToGroup subscription.admin_id, req.user.email, (err, user)->
  63. res.send "joined"