SubscriptionDomainHandler.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. NotificationsBuilder = require("../Notifications/NotificationsBuilder")
  2. async = require("async")
  3. _ = require("underscore")
  4. settings = require("settings-sharelatex")
  5. SubscriptionGroupHandler = require("./SubscriptionGroupHandler")
  6. module.exports = SubscriptionDomainHandler =
  7. getLicenceUserCanJoin: (user)->
  8. licence = SubscriptionDomainHandler._findDomainLicence(user.email)
  9. return licence
  10. attemptToJoinGroup: (user, callback)->
  11. licence = SubscriptionDomainHandler._findDomainLicence(user.email)
  12. if licence? and user.emailVerified
  13. SubscriptionGroupHandler.addUserToGroup licence.adminUser_id, user.email, (err)->
  14. if err?
  15. logger.err err:err, "error adding user to group"
  16. return callback(err)
  17. NotificationsBuilder.groupPlan(user, licence).read()
  18. else
  19. callback "user not verified"
  20. rejectInvitationToGroup: (user, subscription, callback)->
  21. removeUserFromGroup(subscription.admin_id, user._id, callback)
  22. getDomainLicencePage: (user)->
  23. licence = SubscriptionDomainHandler._findDomainLicence(user.email)
  24. if licence?.verifyEmail
  25. return "/user/subscription/#{licence.subscription_id}/group/invited"
  26. else
  27. return undefined
  28. autoAllocate: (user, callback = ->)->
  29. licence = SubscriptionDomainHandler._findDomainLicence(user.email)
  30. if licence?
  31. SubscriptionGroupHandler.addUserToGroup licence.adminUser_id, user.email, callback
  32. else
  33. callback()
  34. _findDomainLicence: (email)->
  35. licence = _.find settings.domainLicences, (licence)->
  36. _.find licence.domains, (domain)->
  37. regex = "[@\.]#{domain}"
  38. return email.match(regex)
  39. return licence
  40. findDomainLicenceBySubscriptionId: (subscription_id)->
  41. licence = _.find settings.domainLicences, (licence)->
  42. licence?.subscription_id == subscription_id
  43. return licence