From fd6192473b3c2a91d1520e366d931063e359a67d Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 20 Oct 2017 17:34:07 -0700 Subject: refactor max users per team (#7691) --- store/sqlstore/team_store.go | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) (limited to 'store/sqlstore') diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index da63992dd..cddfb7c1a 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -10,7 +10,6 @@ import ( "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" - "github.com/mattermost/mattermost-server/utils" ) const ( @@ -326,30 +325,32 @@ func (s SqlTeamStore) AnalyticsTeamCount() store.StoreChannel { }) } -func (s SqlTeamStore) SaveMember(member *model.TeamMember) store.StoreChannel { +func (s SqlTeamStore) SaveMember(member *model.TeamMember, maxUsersPerTeam int) store.StoreChannel { return store.Do(func(result *store.StoreResult) { if result.Err = member.IsValid(); result.Err != nil { return } - if count, err := s.GetMaster().SelectInt( - `SELECT - COUNT(0) - FROM - TeamMembers - INNER JOIN - Users - ON - TeamMembers.UserId = Users.Id - WHERE - TeamId = :TeamId - AND TeamMembers.DeleteAt = 0 - AND Users.DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil { - result.Err = model.NewAppError("SqlUserStore.Save", "store.sql_user.save.member_count.app_error", nil, "teamId="+member.TeamId+", "+err.Error(), http.StatusInternalServerError) - return - } else if int(count) >= *utils.Cfg.TeamSettings.MaxUsersPerTeam { - result.Err = model.NewAppError("SqlUserStore.Save", "store.sql_user.save.max_accounts.app_error", nil, "teamId="+member.TeamId, http.StatusBadRequest) - return + if maxUsersPerTeam >= 0 { + if count, err := s.GetMaster().SelectInt( + `SELECT + COUNT(0) + FROM + TeamMembers + INNER JOIN + Users + ON + TeamMembers.UserId = Users.Id + WHERE + TeamId = :TeamId + AND TeamMembers.DeleteAt = 0 + AND Users.DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil { + result.Err = model.NewAppError("SqlUserStore.Save", "store.sql_user.save.member_count.app_error", nil, "teamId="+member.TeamId+", "+err.Error(), http.StatusInternalServerError) + return + } else if count >= int64(maxUsersPerTeam) { + result.Err = model.NewAppError("SqlUserStore.Save", "store.sql_user.save.max_accounts.app_error", nil, "teamId="+member.TeamId, http.StatusBadRequest) + return + } } if err := s.GetMaster().Insert(member); err != nil { -- cgit v1.2.3-1-g7c22