PLT-6753 Fixed deactivated users counting against max members on a team (#6758)
* PLT-6753 Fixed deactivated users counting against max members on a team * Removed nested sql query when checking the number of team members
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
857d280007
Коммит
039271394e
@@ -494,9 +494,14 @@ func (s SqlTeamStore) SaveMember(member *model.TeamMember) StoreChannel {
|
||||
COUNT(0)
|
||||
FROM
|
||||
TeamMembers
|
||||
INNER JOIN
|
||||
Users
|
||||
ON
|
||||
TeamMembers.UserId = Users.Id
|
||||
WHERE
|
||||
TeamId = :TeamId
|
||||
AND DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil {
|
||||
AND TeamMembers.DeleteAt = 0
|
||||
AND Users.DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil {
|
||||
result.Err = model.NewLocAppError("SqlUserStore.Save", "store.sql_user.save.member_count.app_error", nil, "teamId="+member.TeamId+", "+err.Error())
|
||||
storeChannel <- result
|
||||
close(storeChannel)
|
||||
|
||||
@@ -644,7 +644,24 @@ func TestSaveTeamMemberMaxMembers(t *testing.T) {
|
||||
if result := <-store.Team().GetTotalMemberCount(team.Id); result.Err != nil {
|
||||
t.Fatal(result.Err)
|
||||
} else if count := result.Data.(int64); int(count) != utils.Cfg.TeamSettings.MaxUsersPerTeam {
|
||||
t.Fatalf("should still have 5 team members again, had %v instead", count)
|
||||
t.Fatalf("should have 5 team members again, had %v instead", count)
|
||||
}
|
||||
|
||||
// Deactivating a user should make them stop counting against max members
|
||||
user2 := Must(store.User().Get(userIds[1])).(*model.User)
|
||||
user2.DeleteAt = 1234
|
||||
Must(store.User().Update(user2, true))
|
||||
|
||||
newUserId2 := Must(store.User().Save(&model.User{
|
||||
Username: model.NewId(),
|
||||
Email: model.NewId(),
|
||||
})).(*model.User).Id
|
||||
if result := <-store.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId2}); result.Err != nil {
|
||||
t.Fatal("should've been able to save new member after deleting one", result.Err)
|
||||
} else {
|
||||
defer func(userId string) {
|
||||
<-store.Team().RemoveMember(team.Id, userId)
|
||||
}(newUserId2)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user