SubscriptionRouter.coffee 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. AuthenticationController = require('../Authentication/AuthenticationController')
  2. SubscriptionController = require('./SubscriptionController')
  3. SubscriptionGroupController = require './SubscriptionGroupController'
  4. DomainLicenceController = require './DomainLicenceController'
  5. TeamInvitesController = require './TeamInvitesController'
  6. Settings = require "settings-sharelatex"
  7. module.exports =
  8. apply: (webRouter, privateApiRouter, publicApiRouter) ->
  9. return unless Settings.enableSubscriptions
  10. if Settings.overleaf?
  11. webRouter.get '/user/subscription/plans', (req, res) ->
  12. res.redirect "#{Settings.overleaf.host}/plans"
  13. else
  14. webRouter.get '/user/subscription/plans', SubscriptionController.plansPage
  15. webRouter.get '/user/subscription', AuthenticationController.requireLogin(), SubscriptionController.userSubscriptionPage
  16. webRouter.get '/user/subscription/custom_account', AuthenticationController.requireLogin(), SubscriptionController.userCustomSubscriptionPage
  17. webRouter.get '/user/subscription/new', AuthenticationController.requireLogin(), SubscriptionController.paymentPage
  18. webRouter.get '/user/subscription/thank-you', AuthenticationController.requireLogin(), SubscriptionController.successful_subscription
  19. webRouter.get '/subscription/group', AuthenticationController.requireLogin(), SubscriptionGroupController.renderSubscriptionGroupAdminPage
  20. webRouter.post '/subscription/group/user', AuthenticationController.requireLogin(), SubscriptionGroupController.addUserToGroup
  21. webRouter.get '/subscription/group/export', AuthenticationController.requireLogin(), SubscriptionGroupController.exportGroupCsv
  22. webRouter.delete '/subscription/group/user/:user_id', AuthenticationController.requireLogin(), SubscriptionGroupController.removeUserFromGroup
  23. webRouter.delete '/subscription/group/user', AuthenticationController.requireLogin(), SubscriptionGroupController.removeSelfFromGroup
  24. # Team invites
  25. webRouter.post '/subscription/invites', AuthenticationController.requireLogin(),
  26. TeamInvitesController.createInvite
  27. webRouter.get '/subscription/invites/:token/', AuthenticationController.requireLogin(),
  28. TeamInvitesController.viewInvite
  29. webRouter.put '/subscription/invites/:token/', AuthenticationController.requireLogin(),
  30. TeamInvitesController.acceptInvite
  31. webRouter.delete '/subscription/invites/:email/', AuthenticationController.requireLogin(),
  32. TeamInvitesController.revokeInvite
  33. # Routes to join a domain licence team
  34. webRouter.get '/user/subscription/domain/join', AuthenticationController.requireLogin(), DomainLicenceController.join
  35. webRouter.post '/user/subscription/domain/join', AuthenticationController.requireLogin(), DomainLicenceController.createInvite
  36. #recurly callback
  37. publicApiRouter.post '/user/subscription/callback', SubscriptionController.recurlyNotificationParser, SubscriptionController.recurlyCallback
  38. #user changes their account state
  39. webRouter.post '/user/subscription/create', AuthenticationController.requireLogin(), SubscriptionController.createSubscription
  40. webRouter.post '/user/subscription/update', AuthenticationController.requireLogin(), SubscriptionController.updateSubscription
  41. webRouter.post '/user/subscription/cancel', AuthenticationController.requireLogin(), SubscriptionController.cancelSubscription
  42. webRouter.post '/user/subscription/reactivate', AuthenticationController.requireLogin(), SubscriptionController.reactivateSubscription
  43. webRouter.put '/user/subscription/extend', AuthenticationController.requireLogin(), SubscriptionController.extendTrial
  44. webRouter.get "/user/subscription/upgrade-annual", AuthenticationController.requireLogin(), SubscriptionController.renderUpgradeToAnnualPlanPage
  45. webRouter.post "/user/subscription/upgrade-annual", AuthenticationController.requireLogin(), SubscriptionController.processUpgradeToAnnualPlan
  46. # Currently used in acceptance tests only, as a way to trigger the syncing logic
  47. publicApiRouter.post "/user/:user_id/features/sync", AuthenticationController.httpAuth, SubscriptionController.refreshUserFeatures