Skip to content

Commit aabb626

Browse files
committed
Support orgs with more than 30 members
1 parent e31dc83 commit aabb626

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

lib/github-oauth.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,19 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
120120
return data
121121
}
122122

123-
const getGitHubOrgMemberships = async (): Promise<GitHubOrgMembership[]> => {
123+
const getGitHubOrgMemberships = async (page = 1): Promise<GitHubOrgMembership[]> => {
124124
const url = urls.githubOrgMembers
125125
const headers = {
126126
Accept: "application/json",
127127
Authorization: `Bearer ${config.githubOrgAdminToken}`,
128128
}
129129

130-
const { data } = await axios.get<GitHubOrgMembership[]>(url, { headers })
130+
const params = {
131+
per_page: 100,
132+
page,
133+
}
134+
135+
const { data } = await axios.get<GitHubOrgMembership[]>(url, { headers, params })
131136

132137
return data
133138
}
@@ -204,13 +209,18 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
204209
const state = retrieveState(req, res)
205210
const tokenData = await getGitHubAccessToken(code)
206211
const user = await getGitHubUser(tokenData)
207-
const members = await getGitHubOrgMemberships()
208212

209-
console.log("User: ", user.login)
210-
console.log(
211-
"Members: ",
212-
members.map((member) => member.login),
213-
)
213+
console.log("Login attempt:", user.login)
214+
215+
let members: GitHubOrgMembership[] = []
216+
let page = 1
217+
let isUserMember= false
218+
219+
do {
220+
members = await getGitHubOrgMemberships(page)
221+
page++
222+
isUserMember = members.some((member) => member.login === user.login)
223+
} while (!isUserMember && members.length)
214224

215225
if (!members.find((member) => member.login === user.login)) {
216226
return res.redirect(302, urls.localMembershipError)

0 commit comments

Comments
 (0)