|
|
@@ -11,12 +11,12 @@ module.exports = V1SubscriptionManager =
|
|
|
# - 'v1_pro_plus'
|
|
|
# - 'v1_student'
|
|
|
# - 'v1_free'
|
|
|
- getPlanCodeFromV1: (userId, callback=(err, planCode)->) ->
|
|
|
+ getPlanCodeFromV1: (userId, callback=(err, planCode, v1Id)->) ->
|
|
|
logger.log {userId}, "[V1SubscriptionManager] fetching v1 plan for user"
|
|
|
V1SubscriptionManager._v1Request userId, {
|
|
|
method: 'GET',
|
|
|
url: (v1Id) -> "/api/v1/sharelatex/users/#{v1Id}/plan_code"
|
|
|
- }, (error, body) ->
|
|
|
+ }, (error, body, v1Id) ->
|
|
|
return callback(error) if error?
|
|
|
planName = body?.plan_name
|
|
|
logger.log {userId, planName, body}, "[V1SubscriptionManager] fetched v1 plan for user"
|
|
|
@@ -25,7 +25,7 @@ module.exports = V1SubscriptionManager =
|
|
|
else
|
|
|
# Throw away 'anonymous', etc as being equivalent to null
|
|
|
planName = null
|
|
|
- return callback(null, planName)
|
|
|
+ return callback(null, planName, v1Id)
|
|
|
|
|
|
notifyV1OfFeaturesChange: (userId, callback = (error) ->) ->
|
|
|
V1SubscriptionManager._v1Request userId, {
|
|
|
@@ -33,21 +33,40 @@ module.exports = V1SubscriptionManager =
|
|
|
url: (v1Id) -> "/api/v1/sharelatex/users/#{v1Id}/sync"
|
|
|
}, callback
|
|
|
|
|
|
- getSubscriptionsFromV1: (userId, callback=(err, subscriptions) ->) ->
|
|
|
+ getSubscriptionsFromV1: (userId, callback=(err, subscriptions, v1Id) ->) ->
|
|
|
V1SubscriptionManager._v1Request userId, {
|
|
|
method: 'GET',
|
|
|
url: (v1Id) -> "/api/v1/sharelatex/users/#{v1Id}/subscriptions"
|
|
|
}, callback
|
|
|
|
|
|
- _v1Request: (userId, options, callback=(err, body)->) ->
|
|
|
- if !settings?.apis?.v1
|
|
|
- return callback null, null
|
|
|
+ v1IdForUser: (userId, callback=(err, v1Id) ->) ->
|
|
|
UserGetter.getUser userId, {'overleaf.id': 1}, (err, user) ->
|
|
|
return callback(err) if err?
|
|
|
v1Id = user?.overleaf?.id
|
|
|
if !v1Id?
|
|
|
logger.log {userId}, "[V1SubscriptionManager] no v1 id found for user"
|
|
|
- return callback(null, null)
|
|
|
+
|
|
|
+ callback(null, v1Id)
|
|
|
+
|
|
|
+ # v1 accounts created before migration to v2 had github and mendeley for free
|
|
|
+ # but these are now paid-for features for new accounts (v1id > cutoff)
|
|
|
+ getGrandfatheredFeaturesForV1User: (v1Id) ->
|
|
|
+ cutoff = settings.v1GrandfatheredFeaturesUidCutoff
|
|
|
+ return {} if !cutoff?
|
|
|
+ return {} if !v1Id?
|
|
|
+
|
|
|
+ if (v1Id < cutoff)
|
|
|
+ return settings.v1GrandfatheredFeatures or {}
|
|
|
+ else
|
|
|
+ return {}
|
|
|
+
|
|
|
+ _v1Request: (userId, options, callback=(err, body, v1Id)->) ->
|
|
|
+ if !settings?.apis?.v1
|
|
|
+ return callback null, null
|
|
|
+
|
|
|
+ V1SubscriptionManager.v1IdForUser userId, (err, v1Id) ->
|
|
|
+ return callback(err) if err?
|
|
|
+ return callback(null, null) if !v1Id?
|
|
|
request {
|
|
|
baseUrl: settings.apis.v1.url
|
|
|
url: options.url(v1Id)
|
|
|
@@ -64,7 +83,6 @@ module.exports = V1SubscriptionManager =
|
|
|
error = new V1ConnectionError('No V1 connection') if error.code == 'ECONNREFUSED'
|
|
|
return callback(error)
|
|
|
if 200 <= response.statusCode < 300
|
|
|
- return callback null, body
|
|
|
+ return callback null, body, v1Id
|
|
|
else
|
|
|
return callback new Error("non-success code from v1: #{response.statusCode}")
|
|
|
-
|