mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-15 06:33:55 +01:00
Merge pull request #705 from sharelatex/afc-import-team-from-v1
Changes to allow importing a team from v1
This commit is contained in:
@@ -33,3 +33,6 @@ module.exports =
|
|||||||
|
|
||||||
getGroupsWithEmailInvite: (email, callback) ->
|
getGroupsWithEmailInvite: (email, callback) ->
|
||||||
Subscription.find { invited_emails: email }, callback
|
Subscription.find { invited_emails: email }, callback
|
||||||
|
|
||||||
|
getGroupWithV1Id: (v1TeamId, callback) ->
|
||||||
|
Subscription.findOne { "overleaf.id": v1TeamId }, callback
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ async = require("async")
|
|||||||
_ = require("underscore")
|
_ = require("underscore")
|
||||||
Subscription = require('../../models/Subscription').Subscription
|
Subscription = require('../../models/Subscription').Subscription
|
||||||
SubscriptionLocator = require("./SubscriptionLocator")
|
SubscriptionLocator = require("./SubscriptionLocator")
|
||||||
|
UserGetter = require("../User/UserGetter")
|
||||||
PlansLocator = require("./PlansLocator")
|
PlansLocator = require("./PlansLocator")
|
||||||
Settings = require("settings-sharelatex")
|
Settings = require("settings-sharelatex")
|
||||||
logger = require("logger-sharelatex")
|
logger = require("logger-sharelatex")
|
||||||
@@ -24,17 +25,26 @@ module.exports = SubscriptionUpdater =
|
|||||||
return callback(err) if err?
|
return callback(err) if err?
|
||||||
SubscriptionUpdater._updateSubscriptionFromRecurly recurlySubscription, subscription, callback
|
SubscriptionUpdater._updateSubscriptionFromRecurly recurlySubscription, subscription, callback
|
||||||
|
|
||||||
addUserToGroup: (adminUser_id, user_id, callback)->
|
addUserToGroup: (adminUserId, userId, callback)->
|
||||||
logger.log adminUser_id:adminUser_id, user_id:user_id, "adding user into mongo subscription"
|
@addUsersToGroup(adminUserId, [userId], callback)
|
||||||
|
|
||||||
|
addUsersToGroup: (adminUserId, memberIds, callback)->
|
||||||
|
logger.log adminUserId: adminUserId, memberIds: memberIds, "adding members into mongo subscription"
|
||||||
searchOps =
|
searchOps =
|
||||||
admin_id: adminUser_id
|
admin_id: adminUserId
|
||||||
insertOperation =
|
insertOperation =
|
||||||
"$addToSet": {member_ids:user_id}
|
{ $push: { member_ids: { $each: memberIds } } }
|
||||||
Subscription.findAndModify searchOps, insertOperation, (err, subscription)->
|
|
||||||
if err?
|
Subscription.findAndModify searchOps, insertOperation, (err, subscription) ->
|
||||||
logger.err err:err, searchOps:searchOps, insertOperation:insertOperation, "error findy and modify add user to group"
|
return callback(err) if err?
|
||||||
return callback(err)
|
|
||||||
FeaturesUpdater.refreshFeatures user_id, callback
|
# Only apply features updates to users, not user stubs
|
||||||
|
UserGetter.getUsers memberIds, { _id: 1 }, (err, users) ->
|
||||||
|
return callback(err) if err?
|
||||||
|
|
||||||
|
userIds = users.map (u) -> u._id.toString()
|
||||||
|
async.map userIds, FeaturesUpdater.refreshFeatures, callback
|
||||||
|
|
||||||
|
|
||||||
removeUserFromGroup: (adminUser_id, user_id, callback)->
|
removeUserFromGroup: (adminUser_id, user_id, callback)->
|
||||||
searchOps =
|
searchOps =
|
||||||
@@ -47,6 +57,9 @@ module.exports = SubscriptionUpdater =
|
|||||||
return callback(err)
|
return callback(err)
|
||||||
FeaturesUpdater.refreshFeatures user_id, callback
|
FeaturesUpdater.refreshFeatures user_id, callback
|
||||||
|
|
||||||
|
deleteWithV1Id: (v1TeamId, callback)->
|
||||||
|
Subscription.deleteOne { "overleaf.id": v1TeamId }, callback
|
||||||
|
|
||||||
deleteSubscription: (subscription_id, callback = (error) ->) ->
|
deleteSubscription: (subscription_id, callback = (error) ->) ->
|
||||||
SubscriptionLocator.getSubscription subscription_id, (err, subscription) ->
|
SubscriptionLocator.getSubscription subscription_id, (err, subscription) ->
|
||||||
return callback(err) if err?
|
return callback(err) if err?
|
||||||
|
|||||||
@@ -58,12 +58,18 @@ describe "SubscriptionUpdater", ->
|
|||||||
@PlansLocator =
|
@PlansLocator =
|
||||||
findLocalPlanInSettings: sinon.stub().returns({})
|
findLocalPlanInSettings: sinon.stub().returns({})
|
||||||
|
|
||||||
|
@UserGetter =
|
||||||
|
getUsers: (memberIds, projection, callback) ->
|
||||||
|
users = memberIds.map (id) -> { _id: id }
|
||||||
|
callback(null, users)
|
||||||
|
|
||||||
@ReferalFeatures = getBonusFeatures: sinon.stub().callsArgWith(1)
|
@ReferalFeatures = getBonusFeatures: sinon.stub().callsArgWith(1)
|
||||||
@Modules = {hooks: {fire: sinon.stub().callsArgWith(2, null, null)}}
|
@Modules = {hooks: {fire: sinon.stub().callsArgWith(2, null, null)}}
|
||||||
@SubscriptionUpdater = SandboxedModule.require modulePath, requires:
|
@SubscriptionUpdater = SandboxedModule.require modulePath, requires:
|
||||||
'../../models/Subscription': Subscription:@SubscriptionModel
|
'../../models/Subscription': Subscription:@SubscriptionModel
|
||||||
'./UserFeaturesUpdater': @UserFeaturesUpdater
|
'./UserFeaturesUpdater': @UserFeaturesUpdater
|
||||||
'./SubscriptionLocator': @SubscriptionLocator
|
'./SubscriptionLocator': @SubscriptionLocator
|
||||||
|
'../User/UserGetter': @UserGetter
|
||||||
'./PlansLocator': @PlansLocator
|
'./PlansLocator': @PlansLocator
|
||||||
"logger-sharelatex": log:->
|
"logger-sharelatex": log:->
|
||||||
'settings-sharelatex': @Settings
|
'settings-sharelatex': @Settings
|
||||||
@@ -73,7 +79,6 @@ describe "SubscriptionUpdater", ->
|
|||||||
describe "syncSubscription", ->
|
describe "syncSubscription", ->
|
||||||
|
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
|
|
||||||
@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, @subscription)
|
@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, @subscription)
|
||||||
@SubscriptionUpdater._updateSubscriptionFromRecurly = sinon.stub().callsArgWith(2)
|
@SubscriptionUpdater._updateSubscriptionFromRecurly = sinon.stub().callsArgWith(2)
|
||||||
|
|
||||||
@@ -87,7 +92,6 @@ describe "SubscriptionUpdater", ->
|
|||||||
done()
|
done()
|
||||||
|
|
||||||
it "should not call updateFeatures with group subscription if recurly subscription is not expired", (done)->
|
it "should not call updateFeatures with group subscription if recurly subscription is not expired", (done)->
|
||||||
|
|
||||||
@SubscriptionUpdater.syncSubscription @recurlySubscription, @adminUser._id, (err)=>
|
@SubscriptionUpdater.syncSubscription @recurlySubscription, @adminUser._id, (err)=>
|
||||||
@SubscriptionLocator.getUsersSubscription.calledWith(@adminUser._id).should.equal true
|
@SubscriptionLocator.getUsersSubscription.calledWith(@adminUser._id).should.equal true
|
||||||
@SubscriptionUpdater._updateSubscriptionFromRecurly.called.should.equal true
|
@SubscriptionUpdater._updateSubscriptionFromRecurly.called.should.equal true
|
||||||
@@ -143,7 +147,6 @@ describe "SubscriptionUpdater", ->
|
|||||||
done()
|
done()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe "_createNewSubscription", ->
|
describe "_createNewSubscription", ->
|
||||||
it "should create a new subscription then update the subscription", (done)->
|
it "should create a new subscription then update the subscription", (done)->
|
||||||
@SubscriptionUpdater._createNewSubscription @adminUser._id, =>
|
@SubscriptionUpdater._createNewSubscription @adminUser._id, =>
|
||||||
@@ -153,15 +156,25 @@ describe "SubscriptionUpdater", ->
|
|||||||
done()
|
done()
|
||||||
|
|
||||||
describe "addUserToGroup", ->
|
describe "addUserToGroup", ->
|
||||||
|
beforeEach ->
|
||||||
|
@SubscriptionUpdater.addUsersToGroup = sinon.stub().yields(null)
|
||||||
|
|
||||||
|
it "delegates to addUsersToGroup", (done)->
|
||||||
|
@SubscriptionUpdater.addUserToGroup @adminUser._id, @otherUserId, =>
|
||||||
|
@SubscriptionUpdater.addUsersToGroup
|
||||||
|
.calledWith(@adminUser._id, [@otherUserId]).should.equal true
|
||||||
|
done()
|
||||||
|
|
||||||
|
describe "addUsersToGroup", ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
@FeaturesUpdater.refreshFeatures = sinon.stub().callsArgWith(1)
|
@FeaturesUpdater.refreshFeatures = sinon.stub().callsArgWith(1)
|
||||||
|
|
||||||
it "should add the users id to the group as a set", (done)->
|
it "should add the user ids to the group as a set", (done)->
|
||||||
@SubscriptionUpdater.addUserToGroup @adminUser._id, @otherUserId, =>
|
@SubscriptionUpdater.addUsersToGroup @adminUser._id, [@otherUserId], =>
|
||||||
searchOps =
|
searchOps =
|
||||||
admin_id: @adminUser._id
|
admin_id: @adminUser._id
|
||||||
insertOperation =
|
insertOperation =
|
||||||
"$addToSet": {member_ids:@otherUserId}
|
{ $push: { member_ids: { $each: [@otherUserId] } } }
|
||||||
@findAndModifyStub.calledWith(searchOps, insertOperation).should.equal true
|
@findAndModifyStub.calledWith(searchOps, insertOperation).should.equal true
|
||||||
done()
|
done()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user