mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-23 02:55:13 -04:00
Purchase group/team accounts directly via app GitOrigin-RevId: 1a502878753de77758fb431f45a6366f199f1cb0
37 lines
1.7 KiB
CoffeeScript
37 lines
1.7 KiB
CoffeeScript
Settings = require 'settings-sharelatex'
|
|
fs = require('fs')
|
|
|
|
# The groups.json file encodes the various group plan options we provide, and
|
|
# is used in the app the render the appropriate dialog in the plans page, and
|
|
# to generate the appropriate entries in the Settings.plans array.
|
|
# It is also used by scripts/recurly/sync_recurly.rb, which will make sure
|
|
# Recurly has a plan configured for all the groups, and that the prices are
|
|
# up to date with the data in groups.json.
|
|
data = fs.readFileSync(__dirname + '/../../../templates/plans/groups.json')
|
|
groups = JSON.parse(data.toString())
|
|
|
|
capitalize = (string) ->
|
|
string.charAt(0).toUpperCase() + string.slice(1);
|
|
|
|
# With group accounts in Recurly, we end up with a lot of plans to manage.
|
|
# Rather than hand coding them in the settings file, and then needing to keep
|
|
# that data in sync with the data in groups.json, we can auto generate the
|
|
# group plan entries and append them to Settings.plans at boot time. This is not
|
|
# a particularly clean pattern, since it's a little surprising that settings
|
|
# are modified at boot-time, but I think it's a better option than trying to
|
|
# keep two sources of data in sync.
|
|
for usage, plan_data of groups
|
|
for plan_code, currency_data of plan_data
|
|
for currency, price_data of currency_data
|
|
for size, price of price_data
|
|
Settings.plans.push {
|
|
planCode: "group_#{plan_code}_#{size}_#{usage}",
|
|
name: "#{Settings.appName} #{capitalize(plan_code)} - Group Account (#{size} licenses) - #{capitalize(usage)}",
|
|
hideFromUsers: true,
|
|
annual: true
|
|
features: Settings.features[plan_code]
|
|
groupPlan: true
|
|
membersLimit: parseInt(size)
|
|
}
|
|
|
|
module.exports = groups
|