SubscriptionGroupController.coffee 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. exportGroupCsv: (req, res)->
  48. user_id = AuthenticationController.getLoggedInUserId(req)
  49. logger.log user_id: user_id, "exporting group csv"
  50. getManagedSubscription user_id, (err, subscription)->
  51. return next(error) if error?
  52. if !subscription.groupPlan
  53. return res.redirect("/")
  54. SubscriptionGroupHandler.getPopulatedListOfMembers subscription._id, (err, users)->
  55. groupCsv = ""
  56. for user in users
  57. groupCsv += user.email + "\n"
  58. res.header(
  59. "Content-Disposition",
  60. "attachment; filename=Group.csv"
  61. )
  62. res.contentType('text/csv')
  63. res.send(groupCsv)
  64. # legacy route
  65. redirectToSubscriptionGroupAdminPage: (req, res) ->
  66. user_id = AuthenticationController.getLoggedInUserId(req)
  67. getManagedSubscription user_id, (error, subscription) ->
  68. return next(error) if error?
  69. if !subscription?.groupPlan
  70. return res.redirect("/user/subscription")
  71. res.redirect("/manage/groups/#{subscription._id}/members")
  72. getManagedSubscription = (managerId, callback) ->
  73. SubscriptionLocator.findManagedSubscription managerId, (err, subscription)->
  74. if subscription?
  75. logger.log managerId: managerId, "got managed subscription"
  76. else
  77. err ||= new Error("No subscription found managed by user #{managerId}")
  78. return callback(err, subscription)