SubscriptionRouter.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. const AuthenticationController = require('../Authentication/AuthenticationController')
  2. const SubscriptionController = require('./SubscriptionController')
  3. const SubscriptionGroupController = require('./SubscriptionGroupController')
  4. const TeamInvitesController = require('./TeamInvitesController')
  5. const { RateLimiter } = require('../../infrastructure/RateLimiter')
  6. const RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
  7. const Settings = require('@overleaf/settings')
  8. const teamInviteRateLimiter = new RateLimiter('team-invite', {
  9. points: 10,
  10. duration: 60,
  11. })
  12. module.exports = {
  13. apply(webRouter, privateApiRouter, publicApiRouter) {
  14. if (!Settings.enableSubscriptions) {
  15. return
  16. }
  17. webRouter.get('/user/subscription/plans', SubscriptionController.plansPage)
  18. webRouter.get(
  19. '/user/subscription',
  20. AuthenticationController.requireLogin(),
  21. SubscriptionController.userSubscriptionPage
  22. )
  23. webRouter.get(
  24. '/user/subscription/new',
  25. AuthenticationController.requireLogin(),
  26. SubscriptionController.paymentPage
  27. )
  28. webRouter.get(
  29. '/user/subscription/choose-your-plan',
  30. AuthenticationController.requireLogin(),
  31. SubscriptionController.interstitialPaymentPage
  32. )
  33. webRouter.get(
  34. '/user/subscription/thank-you',
  35. AuthenticationController.requireLogin(),
  36. SubscriptionController.successfulSubscription
  37. )
  38. webRouter.get(
  39. '/user/subscription/canceled',
  40. AuthenticationController.requireLogin(),
  41. SubscriptionController.canceledSubscription
  42. )
  43. webRouter.get(
  44. '/user/subscription/recurly/:pageType',
  45. AuthenticationController.requireLogin(),
  46. SubscriptionController.redirectToHostedPage
  47. )
  48. webRouter.delete(
  49. '/subscription/group/user',
  50. AuthenticationController.requireLogin(),
  51. SubscriptionGroupController.removeSelfFromGroup
  52. )
  53. // Team invites
  54. webRouter.get(
  55. '/subscription/invites/:token/',
  56. AuthenticationController.requireLogin(),
  57. TeamInvitesController.viewInvite
  58. )
  59. webRouter.put(
  60. '/subscription/invites/:token/',
  61. AuthenticationController.requireLogin(),
  62. RateLimiterMiddleware.rateLimit(teamInviteRateLimiter),
  63. TeamInvitesController.acceptInvite
  64. )
  65. // recurly callback
  66. publicApiRouter.post(
  67. '/user/subscription/callback',
  68. AuthenticationController.requireBasicAuth({
  69. [Settings.apis.recurly.webhookUser]: Settings.apis.recurly.webhookPass,
  70. }),
  71. SubscriptionController.recurlyNotificationParser,
  72. SubscriptionController.recurlyCallback
  73. )
  74. // user changes their account state
  75. webRouter.post(
  76. '/user/subscription/create',
  77. AuthenticationController.requireLogin(),
  78. SubscriptionController.createSubscription
  79. )
  80. webRouter.post(
  81. '/user/subscription/update',
  82. AuthenticationController.requireLogin(),
  83. SubscriptionController.updateSubscription
  84. )
  85. webRouter.post(
  86. '/user/subscription/cancel-pending',
  87. AuthenticationController.requireLogin(),
  88. SubscriptionController.cancelPendingSubscriptionChange
  89. )
  90. webRouter.post(
  91. '/user/subscription/cancel',
  92. AuthenticationController.requireLogin(),
  93. SubscriptionController.cancelSubscription
  94. )
  95. webRouter.post(
  96. '/user/subscription/reactivate',
  97. AuthenticationController.requireLogin(),
  98. SubscriptionController.reactivateSubscription
  99. )
  100. webRouter.post(
  101. '/user/subscription/v1/cancel',
  102. AuthenticationController.requireLogin(),
  103. SubscriptionController.cancelV1Subscription
  104. )
  105. webRouter.put(
  106. '/user/subscription/extend',
  107. AuthenticationController.requireLogin(),
  108. SubscriptionController.extendTrial
  109. )
  110. webRouter.get(
  111. '/user/subscription/upgrade-annual',
  112. AuthenticationController.requireLogin(),
  113. SubscriptionController.renderUpgradeToAnnualPlanPage
  114. )
  115. webRouter.post(
  116. '/user/subscription/upgrade-annual',
  117. AuthenticationController.requireLogin(),
  118. SubscriptionController.processUpgradeToAnnualPlan
  119. )
  120. webRouter.post(
  121. '/user/subscription/account/email',
  122. AuthenticationController.requireLogin(),
  123. SubscriptionController.updateAccountEmailAddress
  124. )
  125. },
  126. }