SubscriptionRouter.coffee 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. AuthenticationController = require('../Authentication/AuthenticationController')
  2. SubscriptionController = require('./SubscriptionController')
  3. SubscriptionGroupController = require './SubscriptionGroupController'
  4. TeamInvitesController = require './TeamInvitesController'
  5. RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
  6. Settings = require "settings-sharelatex"
  7. module.exports =
  8. apply: (webRouter, privateApiRouter, publicApiRouter) ->
  9. return unless Settings.enableSubscriptions
  10. webRouter.get '/user/subscription/plans', SubscriptionController.plansPage
  11. webRouter.get '/user/subscription', AuthenticationController.requireLogin(), SubscriptionController.userSubscriptionPage
  12. webRouter.get '/user/subscription/new', AuthenticationController.requireLogin(), SubscriptionController.paymentPage
  13. webRouter.get '/user/subscription/thank-you', AuthenticationController.requireLogin(), SubscriptionController.successful_subscription
  14. webRouter.get '/user/subscription/canceled', AuthenticationController.requireLogin(), SubscriptionController.canceledSubscription
  15. webRouter.get '/subscription/group', AuthenticationController.requireLogin(), SubscriptionGroupController.redirectToSubscriptionGroupAdminPage
  16. webRouter.delete '/subscription/group/user', AuthenticationController.requireLogin(), SubscriptionGroupController.removeSelfFromGroup
  17. # Team invites
  18. webRouter.get '/subscription/invites/:token/', AuthenticationController.requireLogin(),
  19. TeamInvitesController.viewInvite
  20. webRouter.put '/subscription/invites/:token/',
  21. AuthenticationController.requireLogin(),
  22. RateLimiterMiddleware.rateLimit({
  23. endpointName: 'team-invite',
  24. maxRequests: 10
  25. timeInterval: 60
  26. }),
  27. TeamInvitesController.acceptInvite
  28. #recurly callback
  29. publicApiRouter.post '/user/subscription/callback', SubscriptionController.recurlyNotificationParser, SubscriptionController.recurlyCallback
  30. #user changes their account state
  31. webRouter.post '/user/subscription/create', AuthenticationController.requireLogin(), SubscriptionController.createSubscription
  32. webRouter.post '/user/subscription/update', AuthenticationController.requireLogin(), SubscriptionController.updateSubscription
  33. webRouter.post '/user/subscription/cancel', AuthenticationController.requireLogin(), SubscriptionController.cancelSubscription
  34. webRouter.post '/user/subscription/reactivate', AuthenticationController.requireLogin(), SubscriptionController.reactivateSubscription
  35. webRouter.post '/user/subscription/v1/cancel', AuthenticationController.requireLogin(), SubscriptionController.cancelV1Subscription
  36. webRouter.put '/user/subscription/extend', AuthenticationController.requireLogin(), SubscriptionController.extendTrial
  37. webRouter.get "/user/subscription/upgrade-annual", AuthenticationController.requireLogin(), SubscriptionController.renderUpgradeToAnnualPlanPage
  38. webRouter.post "/user/subscription/upgrade-annual", AuthenticationController.requireLogin(), SubscriptionController.processUpgradeToAnnualPlan
  39. # Currently used in acceptance tests only, as a way to trigger the syncing logic
  40. publicApiRouter.post "/user/:user_id/features/sync", AuthenticationController.httpAuth, SubscriptionController.refreshUserFeatures