TeamInvitesController.coffee 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. res.render "subscriptions/team/invite",
  33. inviterName: invite.inviterName
  34. inviteToken: invite.token
  35. hasPersonalSubscription: personalSubscription?
  36. appName: settings.appName
  37. acceptInvite: (req, res, next) ->
  38. token = req.params.token
  39. userId = AuthenticationController.getLoggedInUserId(req)
  40. TeamInvitesHandler.acceptInvite token, userId, (err, results) ->
  41. return next(err) if err?
  42. res.sendStatus 204
  43. revokeInvite: (req, res) ->
  44. subscription = req.entity
  45. email = EmailHelper.parseEmail(req.params.email)
  46. teamManagerId = AuthenticationController.getLoggedInUserId(req)
  47. if !email?
  48. return res.sendStatus(400)
  49. TeamInvitesHandler.revokeInvite teamManagerId, subscription, email, (err, results) ->
  50. return next(err) if err?
  51. res.sendStatus 204