TeamInvitesController.coffee 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. settings = require "settings-sharelatex"
  2. logger = require("logger-sharelatex")
  3. TeamInvitesHandler = require('./TeamInvitesHandler')
  4. AuthenticationController = require("../Authentication/AuthenticationController")
  5. SubscriptionLocator = require("./SubscriptionLocator")
  6. ErrorController = require("../Errors/ErrorController")
  7. EmailHelper = require("../Helpers/EmailHelper")
  8. module.exports =
  9. createInvite: (req, res, next) ->
  10. teamManagerId = AuthenticationController.getLoggedInUserId(req)
  11. subscription = req.entity
  12. email = EmailHelper.parseEmail(req.body.email)
  13. if !email?
  14. return res.status(422).json error:
  15. code: 'invalid_email'
  16. message: req.i18n.translate('invalid_email')
  17. TeamInvitesHandler.createInvite teamManagerId, subscription, email, (err, invite) ->
  18. return next(err) if err?
  19. inviteView = { user:
  20. { email: invite.email, sentAt: invite.sentAt, invite: true }
  21. }
  22. res.json inviteView
  23. viewInvite: (req, res, next) ->
  24. token = req.params.token
  25. userId = AuthenticationController.getLoggedInUserId(req)
  26. TeamInvitesHandler.getInvite token, (err, invite, teamSubscription) ->
  27. return next(err) if err?
  28. if !invite
  29. return ErrorController.notFound(req, res, next)
  30. SubscriptionLocator.getUsersSubscription userId, (err, personalSubscription) ->
  31. return next(err) if err?
  32. hasIndividualRecurlySubscription =
  33. personalSubscription? &&
  34. !personalSubscription.planCode.match(/(free|trial)/)? &&
  35. personalSubscription.groupPlan == false &&
  36. personalSubscription.recurlySubscription_id? &&
  37. personalSubscription.recurlySubscription_id != ""
  38. res.render "subscriptions/team/invite",
  39. inviterName: invite.inviterName
  40. inviteToken: invite.token
  41. hasIndividualRecurlySubscription: hasIndividualRecurlySubscription
  42. appName: settings.appName
  43. acceptInvite: (req, res, next) ->
  44. token = req.params.token
  45. userId = AuthenticationController.getLoggedInUserId(req)
  46. TeamInvitesHandler.acceptInvite token, userId, (err, results) ->
  47. return next(err) if err?
  48. res.sendStatus 204
  49. revokeInvite: (req, res) ->
  50. subscription = req.entity
  51. email = EmailHelper.parseEmail(req.params.email)
  52. teamManagerId = AuthenticationController.getLoggedInUserId(req)
  53. if !email?
  54. return res.sendStatus(400)
  55. TeamInvitesHandler.revokeInvite teamManagerId, subscription, email, (err, results) ->
  56. return next(err) if err?
  57. res.sendStatus 204