SubscriptionGroupController.coffee 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. SubscriptionGroupHandler = require("./SubscriptionGroupHandler")
  2. logger = require("logger-sharelatex")
  3. SubscriptionLocator = require("./SubscriptionLocator")
  4. ErrorsController = require("../Errors/ErrorController")
  5. SubscriptionDomainHandler = require("./SubscriptionDomainHandler")
  6. AuthenticationController = require('../Authentication/AuthenticationController')
  7. _ = require("underscore")
  8. async = require("async")
  9. module.exports =
  10. addUserToGroup: (req, res, next)->
  11. adminUserId = AuthenticationController.getLoggedInUserId(req)
  12. newEmail = req.body?.email?.toLowerCase()?.trim()
  13. getManagedSubscription adminUserId, (error, subscription) ->
  14. return next(error) if error?
  15. logger.log adminUserId:adminUserId, newEmail:newEmail, "adding user to group subscription"
  16. SubscriptionGroupHandler.addUserToGroup subscription._id, newEmail, (err, user)->
  17. if err?
  18. logger.err err:err, newEmail:newEmail, adminUserId:adminUserId, "error adding user from group"
  19. return res.sendStatus 500
  20. result =
  21. user:user
  22. if err and err.limitReached
  23. result.limitReached = true
  24. res.json(result)
  25. removeUserFromGroup: (req, res, next)->
  26. adminUserId = AuthenticationController.getLoggedInUserId(req)
  27. userToRemove_id = req.params.user_id
  28. getManagedSubscription adminUserId, (error, subscription) ->
  29. return next(error) if error?
  30. logger.log adminUserId:adminUserId, userToRemove_id:userToRemove_id, "removing user from group subscription"
  31. SubscriptionGroupHandler.removeUserFromGroup subscription._id, userToRemove_id, (err)->
  32. if err?
  33. logger.err err:err, adminUserId:adminUserId, userToRemove_id:userToRemove_id, "error removing user from group"
  34. return res.sendStatus 500
  35. res.send()
  36. removeSelfFromGroup: (req, res, next)->
  37. adminUserId = req.query.admin_user_id
  38. userToRemove_id = AuthenticationController.getLoggedInUserId(req)
  39. getManagedSubscription adminUserId, (error, subscription) ->
  40. return next(error) if error?
  41. logger.log adminUserId:adminUserId, userToRemove_id:userToRemove_id, "removing user from group subscription after self request"
  42. SubscriptionGroupHandler.removeUserFromGroup subscription._id, userToRemove_id, (err)->
  43. if err?
  44. logger.err err:err, userToRemove_id:userToRemove_id, adminUserId:adminUserId, "error removing self from group"
  45. return res.sendStatus 500
  46. res.send()
  47. renderSubscriptionGroupAdminPage: (req, res, next)->
  48. user_id = AuthenticationController.getLoggedInUserId(req)
  49. getManagedSubscription user_id, (error, subscription)->
  50. return next(error) if error?
  51. if !subscription?.groupPlan
  52. return res.redirect("/user/subscription")
  53. SubscriptionGroupHandler.getPopulatedListOfMembers subscription._id, (err, users)->
  54. res.render "subscriptions/group_admin",
  55. title: 'group_admin'
  56. users: users
  57. subscription: subscription
  58. exportGroupCsv: (req, res)->
  59. user_id = AuthenticationController.getLoggedInUserId(req)
  60. logger.log user_id: user_id, "exporting group csv"
  61. getManagedSubscription user_id, (err, subscription)->
  62. return next(error) if error?
  63. if !subscription.groupPlan
  64. return res.redirect("/")
  65. SubscriptionGroupHandler.getPopulatedListOfMembers subscription._id, (err, users)->
  66. groupCsv = ""
  67. for user in users
  68. groupCsv += user.email + "\n"
  69. res.header(
  70. "Content-Disposition",
  71. "attachment; filename=Group.csv"
  72. )
  73. res.contentType('text/csv')
  74. res.send(groupCsv)
  75. getManagedSubscription = (managerId, callback) ->
  76. SubscriptionLocator.findManagedSubscription managerId, (err, subscription)->
  77. if subscription?
  78. logger.log managerId: managerId, "got managed subscription"
  79. else
  80. err ||= new Error("No subscription found managed by user #{managerId}")
  81. return callback(err, subscription)