@@ -120,14 +120,19 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
120
120
return data
121
121
}
122
122
123
- const getGitHubOrgMemberships = async ( ) : Promise < GitHubOrgMembership [ ] > => {
123
+ const getGitHubOrgMemberships = async ( page = 1 ) : Promise < GitHubOrgMembership [ ] > => {
124
124
const url = urls . githubOrgMembers
125
125
const headers = {
126
126
Accept : "application/json" ,
127
127
Authorization : `Bearer ${ config . githubOrgAdminToken } ` ,
128
128
}
129
129
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 } )
131
136
132
137
return data
133
138
}
@@ -204,13 +209,18 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
204
209
const state = retrieveState ( req , res )
205
210
const tokenData = await getGitHubAccessToken ( code )
206
211
const user = await getGitHubUser ( tokenData )
207
- const members = await getGitHubOrgMemberships ( )
208
212
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 )
214
224
215
225
if ( ! members . find ( ( member ) => member . login === user . login ) ) {
216
226
return res . redirect ( 302 , urls . localMembershipError )
0 commit comments