mirror of
https://github.com/overleaf/overleaf.git
synced 2025-02-17 12:02:13 +00:00
Include invites count in canAddXCollaborators
This commit is contained in:
parent
2494026b85
commit
3a3688d3d0
3 changed files with 54 additions and 9 deletions
|
@ -17,6 +17,14 @@ module.exports = CollaboratorsInviteHandler =
|
|||
return callback(err)
|
||||
callback(null, invites)
|
||||
|
||||
getInviteCount: (projectId, callback=(err, count)->) ->
|
||||
logger.log {projectId}, "counting invites for project"
|
||||
ProjectInvite.count {projectId: projectId}, (err, count) ->
|
||||
if err?
|
||||
logger.err {err, projectId}, "error getting invites from mongo"
|
||||
return callback(err)
|
||||
callback(null, count)
|
||||
|
||||
inviteToProject: (projectId, sendingUserId, email, privileges, callback=(err,invite)->) ->
|
||||
logger.log {projectId, sendingUserId, email, privileges}, "adding invite"
|
||||
Crypto.randomBytes 24, (err, buffer) ->
|
||||
|
|
|
@ -4,6 +4,7 @@ User = require("../../models/User").User
|
|||
SubscriptionLocator = require("./SubscriptionLocator")
|
||||
Settings = require("settings-sharelatex")
|
||||
CollaboratorsHandler = require("../Collaborators/CollaboratorsHandler")
|
||||
CollaboratorsInvitesHandler = require("../Collaborators/CollaboratorsInviteHandler")
|
||||
|
||||
module.exports =
|
||||
|
||||
|
@ -20,10 +21,12 @@ module.exports =
|
|||
return callback(error) if error?
|
||||
CollaboratorsHandler.getCollaboratorCount project_id, (error, current_number) =>
|
||||
return callback(error) if error?
|
||||
if current_number + x_collaborators <= allowed_number or allowed_number < 0
|
||||
callback null, true
|
||||
else
|
||||
callback null, false
|
||||
CollaboratorsInvitesHandler.getInviteCount project_id, (error, invite_count) =>
|
||||
return callback(error) if error?
|
||||
if current_number + invite_count + x_collaborators <= allowed_number or allowed_number < 0
|
||||
callback null, true
|
||||
else
|
||||
callback null, false
|
||||
|
||||
userHasSubscriptionOrIsGroupMember: (user, callback = (err, hasSubscriptionOrIsMember)->) ->
|
||||
@userHasSubscription user, (err, hasSubscription, subscription)=>
|
||||
|
@ -41,7 +44,7 @@ module.exports =
|
|||
hasValidSubscription = subscription? and (subscription.recurlySubscription_id? or subscription?.customAccount == true)
|
||||
logger.log user:user, hasValidSubscription:hasValidSubscription, subscription:subscription, "checking if user has subscription"
|
||||
callback err, hasValidSubscription, subscription
|
||||
|
||||
|
||||
userIsMemberOfGroupSubscription: (user, callback = (error, isMember, subscriptions) ->) ->
|
||||
logger.log user_id: user._id, "checking is user is member of subscription groups"
|
||||
SubscriptionLocator.getMemberSubscriptions user._id, (err, subscriptions = []) ->
|
||||
|
@ -65,4 +68,3 @@ getOwnerOfProject = (project_id, callback)->
|
|||
return callback(error) if error?
|
||||
User.findById project.owner_ref, (error, owner) ->
|
||||
callback(error, owner)
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ describe "LimitationsManager", ->
|
|||
'./SubscriptionLocator':@SubscriptionLocator
|
||||
'settings-sharelatex' : @Settings = {}
|
||||
"../Collaborators/CollaboratorsHandler": @CollaboratorsHandler = {}
|
||||
"../Collaborators/CollaboratorsInviteHandler": @CollaboratorsInviteHandler = {}
|
||||
'logger-sharelatex':log:->
|
||||
|
||||
describe "allowedNumberOfCollaboratorsInProject", ->
|
||||
|
@ -56,6 +57,7 @@ describe "LimitationsManager", ->
|
|||
describe "canAddXCollaborators", ->
|
||||
beforeEach ->
|
||||
@CollaboratorsHandler.getCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager,
|
||||
"allowedNumberOfCollaboratorsInProject",
|
||||
(project_id, callback) => callback(null, @allowed_number)
|
||||
|
@ -65,6 +67,17 @@ describe "LimitationsManager", ->
|
|||
beforeEach ->
|
||||
@current_number = 1
|
||||
@allowed_number = 2
|
||||
@invite_count = 0
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return true", ->
|
||||
@callback.calledWith(null, true).should.equal true
|
||||
|
||||
describe "when the project has fewer collaborators and invites than allowed", ->
|
||||
beforeEach ->
|
||||
@current_number = 1
|
||||
@allowed_number = 4
|
||||
@invite_count = 1
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return true", ->
|
||||
|
@ -74,6 +87,7 @@ describe "LimitationsManager", ->
|
|||
beforeEach ->
|
||||
@current_number = 1
|
||||
@allowed_number = 2
|
||||
@invite_count = 0
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 2, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
|
@ -83,6 +97,7 @@ describe "LimitationsManager", ->
|
|||
beforeEach ->
|
||||
@current_number = 3
|
||||
@allowed_number = 2
|
||||
@invite_count = 0
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
|
@ -92,11 +107,31 @@ describe "LimitationsManager", ->
|
|||
beforeEach ->
|
||||
@current_number = 100
|
||||
@allowed_number = -1
|
||||
@invite_count = 0
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return true", ->
|
||||
@callback.calledWith(null, true).should.equal true
|
||||
|
||||
describe 'when the project has more invites than allowed', ->
|
||||
beforeEach ->
|
||||
@current_number = 0
|
||||
@allowed_number = 2
|
||||
@invite_count = 2
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
@callback.calledWith(null, false).should.equal true
|
||||
|
||||
describe 'when the project has more invites and collaborators than allowed', ->
|
||||
beforeEach ->
|
||||
@current_number = 1
|
||||
@allowed_number = 2
|
||||
@invite_count = 1
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
@callback.calledWith(null, false).should.equal true
|
||||
|
||||
describe "userHasSubscription", ->
|
||||
beforeEach ->
|
||||
|
@ -193,7 +228,7 @@ describe "LimitationsManager", ->
|
|||
@LimitationsManager.userHasSubscriptionOrIsGroupMember @user, (err, hasSubOrIsGroupMember)->
|
||||
hasSubOrIsGroupMember.should.equal false
|
||||
done()
|
||||
|
||||
|
||||
describe "hasGroupMembersLimitReached", ->
|
||||
|
||||
beforeEach ->
|
||||
|
@ -214,10 +249,10 @@ describe "LimitationsManager", ->
|
|||
@LimitationsManager.hasGroupMembersLimitReached @user_id, (err, limitReached)->
|
||||
limitReached.should.equal false
|
||||
done()
|
||||
|
||||
|
||||
it "should return true if the limit has been exceded", (done)->
|
||||
@subscription.membersLimit = 0
|
||||
@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, @subscription)
|
||||
@LimitationsManager.hasGroupMembersLimitReached @user_id, (err, limitReached)->
|
||||
limitReached.should.equal true
|
||||
done()
|
||||
done()
|
||||
|
|
Loading…
Reference in a new issue