2019-05-29 05:21:06 -04:00
|
|
|
/* eslint-disable
|
|
|
|
max-len,
|
|
|
|
*/
|
|
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
|
|
// Fix any style issues and re-enable lint.
|
|
|
|
/*
|
|
|
|
* decaffeinate suggestions:
|
|
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
|
|
*/
|
|
|
|
const AuthenticationController = require('../Authentication/AuthenticationController')
|
|
|
|
const SubscriptionController = require('./SubscriptionController')
|
|
|
|
const SubscriptionGroupController = require('./SubscriptionGroupController')
|
|
|
|
const TeamInvitesController = require('./TeamInvitesController')
|
|
|
|
const RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
|
|
|
|
const Settings = require('settings-sharelatex')
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
apply(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
if (!Settings.enableSubscriptions) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
webRouter.get('/user/subscription/plans', SubscriptionController.plansPage)
|
|
|
|
|
|
|
|
webRouter.get(
|
|
|
|
'/user/subscription',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.userSubscriptionPage
|
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.get(
|
|
|
|
'/user/subscription/new',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.paymentPage
|
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.get(
|
|
|
|
'/user/subscription/thank-you',
|
|
|
|
AuthenticationController.requireLogin(),
|
2021-05-26 08:26:59 -04:00
|
|
|
SubscriptionController.successfulSubscription
|
2019-05-29 05:21:06 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.get(
|
|
|
|
'/user/subscription/canceled',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.canceledSubscription
|
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.delete(
|
|
|
|
'/subscription/group/user',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionGroupController.removeSelfFromGroup
|
|
|
|
)
|
|
|
|
|
|
|
|
// Team invites
|
|
|
|
webRouter.get(
|
|
|
|
'/subscription/invites/:token/',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
TeamInvitesController.viewInvite
|
|
|
|
)
|
|
|
|
webRouter.put(
|
|
|
|
'/subscription/invites/:token/',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
RateLimiterMiddleware.rateLimit({
|
|
|
|
endpointName: 'team-invite',
|
|
|
|
maxRequests: 10,
|
2021-04-27 03:52:58 -04:00
|
|
|
timeInterval: 60,
|
2019-05-29 05:21:06 -04:00
|
|
|
}),
|
|
|
|
TeamInvitesController.acceptInvite
|
|
|
|
)
|
|
|
|
|
|
|
|
// recurly callback
|
|
|
|
publicApiRouter.post(
|
|
|
|
'/user/subscription/callback',
|
|
|
|
SubscriptionController.recurlyNotificationParser,
|
|
|
|
SubscriptionController.recurlyCallback
|
|
|
|
)
|
|
|
|
|
|
|
|
// user changes their account state
|
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/create',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.createSubscription
|
|
|
|
)
|
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/update',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.updateSubscription
|
|
|
|
)
|
2021-04-27 10:17:39 -04:00
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/cancel-pending',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.cancelPendingSubscriptionChange
|
|
|
|
)
|
2019-05-29 05:21:06 -04:00
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/cancel',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.cancelSubscription
|
|
|
|
)
|
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/reactivate',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.reactivateSubscription
|
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/v1/cancel',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.cancelV1Subscription
|
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.put(
|
|
|
|
'/user/subscription/extend',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.extendTrial
|
|
|
|
)
|
|
|
|
|
|
|
|
webRouter.get(
|
|
|
|
'/user/subscription/upgrade-annual',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.renderUpgradeToAnnualPlanPage
|
|
|
|
)
|
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/upgrade-annual',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.processUpgradeToAnnualPlan
|
|
|
|
)
|
|
|
|
|
2020-02-20 11:08:30 -05:00
|
|
|
webRouter.post(
|
|
|
|
'/user/subscription/account/email',
|
|
|
|
AuthenticationController.requireLogin(),
|
|
|
|
SubscriptionController.updateAccountEmailAddress
|
|
|
|
)
|
|
|
|
|
2019-05-29 05:21:06 -04:00
|
|
|
// Currently used in acceptance tests only, as a way to trigger the syncing logic
|
|
|
|
return publicApiRouter.post(
|
|
|
|
'/user/:user_id/features/sync',
|
|
|
|
AuthenticationController.httpAuth,
|
|
|
|
SubscriptionController.refreshUserFeatures
|
|
|
|
)
|
2021-04-27 03:52:58 -04:00
|
|
|
},
|
2019-05-29 05:21:06 -04:00
|
|
|
}
|