From 5ee112bc00ceb0062b034a1ee0b25009454656d4 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Tue, 12 Jul 2022 18:06:27 -0500 Subject: [PATCH] fix: Fetch all GitHub teams on login (#2951) This wasn't looping prior, so organizations with >100 teams couldn't login. Contributes to #2848. --- cli/server.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/cli/server.go b/cli/server.go index 45e3978cd3..3573930fc9 100644 --- a/cli/server.go +++ b/cli/server.go @@ -771,10 +771,23 @@ func configureGithubOAuth2(accessURL *url.URL, clientID, clientSecret string, al return memberships, err }, ListTeams: func(ctx context.Context, client *http.Client, org string) ([]*github.Team, error) { - teams, _, err := github.NewClient(client).Teams.ListTeams(ctx, org, &github.ListOptions{ + opt := &github.ListOptions{ + // This is the maximum amount per-page that GitHub allows. PerPage: 100, - }) - return teams, err + } + var allTeams []*github.Team + for { + teams, resp, err := github.NewClient(client).Teams.ListTeams(ctx, org, opt) + if err != nil { + return nil, err + } + allTeams = append(allTeams, teams...) + if resp.NextPage == 0 { + break + } + opt.Page = resp.NextPage + } + return allTeams, nil }, }, nil }