Ver código fonte

Honour invited_emails for the team being

We'll remove them soon, but we want to keep them for a while so
recent invites can join their teams.
Alberto Fernández Capel 8 anos atrás
pai
commit
a3bb99d755

+ 4 - 1
services/web/app/coffee/Features/Subscription/LimitationsManager.coffee

@@ -56,7 +56,10 @@ module.exports = LimitationsManager =
 			callback err, subscriptions.length > 0, subscriptions
 			callback err, subscriptions.length > 0, subscriptions
 
 
 	teamHasReachedMemberLimit: (subscription) ->
 	teamHasReachedMemberLimit: (subscription) ->
-		currentTotal = (subscription.member_ids or []).length + (subscription.teamInvites or []).length
+		currentTotal = (subscription.member_ids or []).length
+			+ (subscription.teamInvites or []).length
+			+ (subscription.invited_emails or []).length
+
 		return currentTotal >= subscription.membersLimit
 		return currentTotal >= subscription.membersLimit
 
 
 	hasGroupMembersLimitReached: (user_id, callback = (err, limitReached, subscription)->)->
 	hasGroupMembersLimitReached: (user_id, callback = (err, limitReached, subscription)->)->

+ 3 - 0
services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee

@@ -47,6 +47,9 @@ module.exports = SubscriptionGroupHandler =
 
 
 			users = []
 			users = []
 
 
+			for email in subscription.invited_emails or []
+				users.push buildEmailInviteViewModel(email)
+
 			for teamInvite in subscription.teamInvites or []
 			for teamInvite in subscription.teamInvites or []
 				users.push buildEmailInviteViewModel(teamInvite.email)
 				users.push buildEmailInviteViewModel(teamInvite.email)
 
 

+ 7 - 0
services/web/app/coffee/Features/Subscription/SubscriptionUpdater.coffee

@@ -47,6 +47,13 @@ module.exports = SubscriptionUpdater =
 				return callback(err)
 				return callback(err)
 			FeaturesUpdater.refreshFeatures user_id, callback
 			FeaturesUpdater.refreshFeatures user_id, callback
 
 
+		removeEmailInviteFromGroup: (adminUser_id, email, callback)->
+			Subscription.update {
+				admin_id: adminUser_id
+			}, "$pull": {
+				invited_emails: email
+			}, 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?

+ 10 - 2
services/web/app/coffee/Features/Subscription/TeamInvitesHandler.coffee

@@ -110,10 +110,18 @@ createInvite = (subscription, email, inviterName, callback) ->
 				return callback(error, invite)
 				return callback(error, invite)
 
 
 removeInviteFromTeam = (subscriptionId, email, callback) ->
 removeInviteFromTeam = (subscriptionId, email, callback) ->
+	email = email.trim().toLowerCase()
+
 	searchConditions = { _id: new ObjectId(subscriptionId.toString()) }
 	searchConditions = { _id: new ObjectId(subscriptionId.toString()) }
-	updateOp = { $pull: { teamInvites: { email: email.trim().toLowerCase() } } }
 
 
-	Subscription.update(searchConditions, updateOp, callback)
+	removeInvite = { $pull: { teamInvites: { email: email } } }
+	removeLegacyInvite = { $pull: { invited_emails: email } }
+
+	async.series [
+		(cb) -> Subscription.update(searchConditions, removeInvite, cb),
+		(cb) -> Subscription.update(searchConditions, removeLegacyInvite, cb),
+	], callback
+
 
 
 checkIfInviteIsPossible = (subscription, email, callback = (error, possible, reason) -> ) ->
 checkIfInviteIsPossible = (subscription, email, callback = (error, possible, reason) -> ) ->
 	if LimitationsManager.teamHasReachedMemberLimit(subscription)
 	if LimitationsManager.teamHasReachedMemberLimit(subscription)

+ 5 - 0
services/web/test/unit/coffee/Subscription/TeamInvitesHandlerTests.coffee

@@ -201,6 +201,11 @@ describe "TeamInvitesHandler", ->
 					{ _id: new ObjectId("55153a8014829a865bbf700d") },
 					{ _id: new ObjectId("55153a8014829a865bbf700d") },
 					{ '$pull': { teamInvites: { email: "jorah@mormont.org" } } }
 					{ '$pull': { teamInvites: { email: "jorah@mormont.org" } } }
 				).should.eq true
 				).should.eq true
+
+				@Subscription.update.calledWith(
+					{ _id: new ObjectId("55153a8014829a865bbf700d") },
+					{ '$pull': { invited_emails: "jorah@mormont.org" } }
+				).should.eq true
 				done()
 				done()
 
 
 	describe "createTeamInvitesForLegacyInvitedEmail", (done) ->
 	describe "createTeamInvitesForLegacyInvitedEmail", (done) ->