Skip to content

Commit

Permalink
Support orgs with more than 30 members
Browse files Browse the repository at this point in the history
  • Loading branch information
n4bb12 committed Jul 4, 2021
1 parent e31dc83 commit aabb626
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions lib/github-oauth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,19 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
return data
}

const getGitHubOrgMemberships = async (): Promise<GitHubOrgMembership[]> => {
const getGitHubOrgMemberships = async (page = 1): Promise<GitHubOrgMembership[]> => {
const url = urls.githubOrgMembers
const headers = {
Accept: "application/json",
Authorization: `Bearer ${config.githubOrgAdminToken}`,
}

const { data } = await axios.get<GitHubOrgMembership[]>(url, { headers })
const params = {
per_page: 100,
page,
}

const { data } = await axios.get<GitHubOrgMembership[]>(url, { headers, params })

return data
}
Expand Down Expand Up @@ -204,13 +209,18 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
const state = retrieveState(req, res)
const tokenData = await getGitHubAccessToken(code)
const user = await getGitHubUser(tokenData)
const members = await getGitHubOrgMemberships()

console.log("User: ", user.login)
console.log(
"Members: ",
members.map((member) => member.login),
)
console.log("Login attempt:", user.login)

let members: GitHubOrgMembership[] = []
let page = 1
let isUserMember= false

do {
members = await getGitHubOrgMemberships(page)
page++
isUserMember = members.some((member) => member.login === user.login)
} while (!isUserMember && members.length)

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

0 comments on commit aabb626

Please sign in to comment.