diff --git a/pkg/services/sqlstore/user.go b/pkg/services/sqlstore/user.go index 30f0c95f5ad..fdeede15c91 100644 --- a/pkg/services/sqlstore/user.go +++ b/pkg/services/sqlstore/user.go @@ -2,7 +2,6 @@ package sqlstore import ( - "bytes" "context" "fmt" "sort" @@ -10,7 +9,6 @@ import ( "github.com/grafana/grafana/pkg/events" "github.com/grafana/grafana/pkg/models" - ac "github.com/grafana/grafana/pkg/services/accesscontrol" "github.com/grafana/grafana/pkg/services/org" "github.com/grafana/grafana/pkg/services/user" "github.com/grafana/grafana/pkg/util" @@ -206,56 +204,6 @@ func (ss *SQLStore) GetUserOrgList(ctx context.Context, query *models.GetUserOrg }) } -// GetTeamsByUser is used by the Guardian when checking a users' permissions -// TODO: use team.Service after user service is split -func (ss *SQLStore) GetTeamsByUser(ctx context.Context, query *models.GetTeamsByUserQuery) error { - return ss.WithDbSession(ctx, func(sess *DBSession) error { - query.Result = make([]*models.TeamDTO, 0) - - var sql bytes.Buffer - var params []interface{} - params = append(params, query.OrgId, query.UserId) - - sql.WriteString(getTeamSelectSQLBase([]string{})) - sql.WriteString(` INNER JOIN team_member on team.id = team_member.team_id`) - sql.WriteString(` WHERE team.org_id = ? and team_member.user_id = ?`) - - if !ac.IsDisabled(ss.Cfg) { - acFilter, err := ac.Filter(query.SignedInUser, "team.id", "teams:id:", ac.ActionTeamsRead) - if err != nil { - return err - } - sql.WriteString(` and` + acFilter.Where) - params = append(params, acFilter.Args...) - } - - err := sess.SQL(sql.String(), params...).Find(&query.Result) - return err - }) -} - -func getTeamMemberCount(filteredUsers []string) string { - if len(filteredUsers) > 0 { - return `(SELECT COUNT(*) FROM team_member - INNER JOIN ` + dialect.Quote("user") + ` ON team_member.user_id = ` + dialect.Quote("user") + `.id - WHERE team_member.team_id = team.id AND ` + dialect.Quote("user") + `.login NOT IN (?` + - strings.Repeat(",?", len(filteredUsers)-1) + ")" + - `) AS member_count ` - } - - return "(SELECT COUNT(*) FROM team_member WHERE team_member.team_id = team.id) AS member_count " -} - -func getTeamSelectSQLBase(filteredUsers []string) string { - return `SELECT - team.id as id, - team.org_id, - team.name as name, - team.email as email, ` + - getTeamMemberCount(filteredUsers) + - ` FROM team as team ` -} - func UserDeletions() []string { deletes := []string{ "DELETE FROM star WHERE user_id = ?", diff --git a/pkg/services/team/teamimpl/store_test.go b/pkg/services/team/teamimpl/store_test.go index 169a6b53143..17ec4f6d08b 100644 --- a/pkg/services/team/teamimpl/store_test.go +++ b/pkg/services/team/teamimpl/store_test.go @@ -236,7 +236,7 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) { Permissions: map[int64]map[string][]string{testOrgID: {ac.ActionOrgUsersRead: {ac.ScopeUsersAll}, ac.ActionTeamsRead: {ac.ScopeTeamsAll}}}, }, } - err = sqlStore.GetTeamsByUser(context.Background(), query) + err = teamSvc.GetTeamsByUser(context.Background(), query) require.NoError(t, err) require.Equal(t, len(query.Result), 1) require.Equal(t, query.Result[0].Name, "group2 name")