mirror of
https://github.com/overleaf/overleaf.git
synced 2025-03-01 20:42:06 +00:00
Check all emails to prevent invite duplicates
This commit is contained in:
parent
566c41cafd
commit
959db80177
2 changed files with 12 additions and 6 deletions
|
@ -118,10 +118,12 @@ checkIfInviteIsPossible = (subscription, email, callback = (error, possible, rea
|
|||
logger.log {subscriptionId: subscription.id}, "team has reached member limit"
|
||||
return callback(null, false, limitReached: true)
|
||||
|
||||
async.map subscription.member_ids, UserGetter.getUser, (error, members) ->
|
||||
UserGetter.getUserByAnyEmail email, (error, existingUser) ->
|
||||
return callback(error) if error?
|
||||
return callback(null, true) unless existingUser?
|
||||
|
||||
existingMember = members.find (member) -> member.email == email
|
||||
existingMember = subscription.member_ids.find (memberId) ->
|
||||
memberId.toString() == existingUser._id.toString()
|
||||
|
||||
if existingMember
|
||||
logger.log {subscriptionId: subscription.id, email}, "user already in team"
|
||||
|
|
|
@ -37,7 +37,8 @@ describe "TeamInvitesHandler", ->
|
|||
}
|
||||
|
||||
@UserGetter = {
|
||||
getUser: sinon.stub()
|
||||
getUser: sinon.stub().yields(),
|
||||
getUserByAnyEmail: sinon.stub().yields()
|
||||
}
|
||||
|
||||
@SubscriptionUpdater = {
|
||||
|
@ -65,6 +66,8 @@ describe "TeamInvitesHandler", ->
|
|||
}
|
||||
|
||||
@UserGetter.getUser.withArgs(@manager.id).yields(null, @manager)
|
||||
@UserGetter.getUserByAnyEmail.withArgs(@manager.email).yields(null, @manager)
|
||||
|
||||
@SubscriptionLocator.getUsersSubscription.yields(null, @subscription)
|
||||
@Subscription.findOne.yields(null, @subscription)
|
||||
|
||||
|
@ -170,7 +173,7 @@ describe "TeamInvitesHandler", ->
|
|||
email: "tyrion@lannister.com"
|
||||
}
|
||||
|
||||
@UserGetter.getUser.withArgs(@user.id).yields(null, @user)
|
||||
@UserGetter.getUserByAnyEmail.withArgs(@user.email).yields(null, @user)
|
||||
|
||||
@subscription.teamInvites.push({
|
||||
email: "john.snow@nightwatch.com",
|
||||
|
@ -226,14 +229,15 @@ describe "TeamInvitesHandler", ->
|
|||
expect(err).to.deep.equal(limitReached: true)
|
||||
done()
|
||||
|
||||
it "doen't create an invite if the user is already part of the team", (done) ->
|
||||
it "doesn't create an invite if the user is already part of the team", (done) ->
|
||||
member = {
|
||||
id: "1a2b",
|
||||
_id: "1a2b",
|
||||
email: "tyrion@lannister.com"
|
||||
}
|
||||
|
||||
@subscription.member_ids = [member.id]
|
||||
@UserGetter.getUser.withArgs(member.id).yields(null, member)
|
||||
@UserGetter.getUserByAnyEmail.withArgs(member.email).yields(null, member)
|
||||
|
||||
@TeamInvitesHandler.createManagerInvite @manager.id, "tyrion@lannister.com", (err, invite) =>
|
||||
expect(err).to.deep.equal(alreadyInTeam: true)
|
||||
|
|
Loading…
Reference in a new issue