Merge pull request #23263 from overleaf/ii-flexible-licensing-subscription-group-handler

[web] FL check subscription existence

GitOrigin-RevId: b564d681245137955a8f1e7367b9bd1a6b404268
This commit is contained in:
ilkin-overleaf
2025-02-05 09:05:45 +00:00
committed by Copybot
parent fb8794921e
commit 72be034435
4 changed files with 47 additions and 30 deletions
@@ -123,9 +123,10 @@ async function _removeUserFromGroup(
*/
async function addSeatsToGroupSubscription(req, res) {
try {
const userId = SessionManager.getLoggedInUserId(req.session)
const { subscription, plan } =
await SubscriptionGroupHandler.promises.getUsersGroupSubscriptionDetails(
req
userId
)
await SubscriptionGroupHandler.promises.ensureFlexibleLicensingEnabled(plan)
@@ -151,9 +152,11 @@ async function addSeatsToGroupSubscription(req, res) {
*/
async function previewAddSeatsSubscriptionChange(req, res) {
try {
const userId = SessionManager.getLoggedInUserId(req.session)
const preview =
await SubscriptionGroupHandler.promises.previewAddSeatsSubscriptionChange(
req
userId,
req.body.adding
)
res.json(preview)
@@ -173,9 +176,11 @@ async function previewAddSeatsSubscriptionChange(req, res) {
*/
async function createAddSeatsSubscriptionChange(req, res) {
try {
const userId = SessionManager.getLoggedInUserId(req.session)
const create =
await SubscriptionGroupHandler.promises.createAddSeatsSubscriptionChange(
req
userId,
req.body.adding
)
res.json(create)
@@ -3,7 +3,6 @@ const SubscriptionUpdater = require('./SubscriptionUpdater')
const SubscriptionLocator = require('./SubscriptionLocator')
const SubscriptionController = require('./SubscriptionController')
const { Subscription } = require('../../models/Subscription')
const SessionManager = require('../Authentication/SessionManager')
const RecurlyClient = require('./RecurlyClient')
const PlansLocator = require('./PlansLocator')
const SubscriptionHandler = require('./SubscriptionHandler')
@@ -63,11 +62,14 @@ async function ensureFlexibleLicensingEnabled(plan) {
}
}
async function getUsersGroupSubscriptionDetails(req) {
const userId = SessionManager.getLoggedInUserId(req.session)
async function getUsersGroupSubscriptionDetails(userId) {
const subscription =
await SubscriptionLocator.promises.getUsersSubscription(userId)
if (!subscription) {
throw new Error('No subscription was found')
}
if (!subscription.groupPlan) {
throw new Error('User subscription is not a group plan')
}
@@ -85,12 +87,10 @@ async function getUsersGroupSubscriptionDetails(req) {
}
}
async function _addSeatsSubscriptionChange(req) {
const adding = req.body.adding
async function _addSeatsSubscriptionChange(userId, adding) {
const { recurlySubscription, plan } =
await getUsersGroupSubscriptionDetails(req)
await getUsersGroupSubscriptionDetails(userId)
await ensureFlexibleLicensingEnabled(plan)
const userId = SessionManager.getLoggedInUserId(req.session)
const currentAddonQuantity =
recurlySubscription.addOns.find(
addOn => addOn.code === MEMBERS_LIMIT_ADD_ON_CODE
@@ -135,15 +135,14 @@ async function _addSeatsSubscriptionChange(req) {
return {
changeRequest,
userId,
currentAddonQuantity,
recurlySubscription,
}
}
async function previewAddSeatsSubscriptionChange(req) {
const { changeRequest, userId, currentAddonQuantity } =
await _addSeatsSubscriptionChange(req)
async function previewAddSeatsSubscriptionChange(userId, adding) {
const { changeRequest, currentAddonQuantity } =
await _addSeatsSubscriptionChange(userId, adding)
const paymentMethod = await RecurlyClient.promises.getPaymentMethod(userId)
const subscriptionChange =
await RecurlyClient.promises.previewSubscriptionChange(changeRequest)
@@ -166,16 +165,16 @@ async function previewAddSeatsSubscriptionChange(req) {
return subscriptionChangePreview
}
async function createAddSeatsSubscriptionChange(req) {
const { changeRequest, userId, recurlySubscription } =
await _addSeatsSubscriptionChange(req)
async function createAddSeatsSubscriptionChange(userId, adding) {
const { changeRequest, recurlySubscription } =
await _addSeatsSubscriptionChange(userId, adding)
await RecurlyClient.promises.applySubscriptionChangeRequest(changeRequest)
await SubscriptionHandler.promises.syncSubscription(
{ uuid: recurlySubscription.id },
userId
)
return { adding: req.body.adding }
return { adding }
}
async function _getUpgradeTargetPlanCodeMaybeThrow(subscription) {