@@ -16,7 +16,7 @@ import (
16
16
17
17
"golang.org/x/oauth2"
18
18
"golang.org/x/oauth2/google"
19
- "google.golang.org/api/admin/directory/v1"
19
+ admin "google.golang.org/api/admin/directory/v1"
20
20
)
21
21
22
22
type GoogleProvider struct {
@@ -179,33 +179,21 @@ func getAdminService(adminEmail string, credentialsReader io.Reader) *admin.Serv
179
179
}
180
180
181
181
func userInGroup (service * admin.Service , groups []string , email string ) bool {
182
- pageToken := ""
183
- // limit to 10 pages/requests
184
- for i := 0 ; i < 10 ; i ++ {
185
- req := service .Groups .List ().UserKey (email )
186
- if pageToken != "" {
187
- req .PageToken (pageToken )
188
- }
189
- resp , err := req .Do ()
182
+ for _ , allowedgroup := range groups {
183
+ resp , err := service .Members .HasMember (allowedgroup , email ).Do ()
184
+
190
185
if err != nil {
191
- log .Printf ("Error calling service.Groups.List().userKey(%s) " , email )
186
+ log .Printf ("Error calling service.Members.HasMember(%s, %s): %s " , allowedgroup , email , err )
192
187
return false
193
188
}
194
- for _ , group := range resp .Groups {
195
- for _ , allowedgroup := range groups {
196
- if group .Email == allowedgroup {
197
- log .Printf ("%s is a member of %s, authorized" , email , allowedgroup )
198
- return true
199
- }
200
- }
201
- }
202
- if resp .NextPageToken == "" {
203
- log .Printf ("%s not found in any allowed groups" , email )
204
- return false
189
+
190
+ if resp .IsMember {
191
+ log .Printf ("%s is a member of %s, authorized" , email , allowedgroup )
192
+ return true
205
193
}
206
- pageToken = resp .NextPageToken
207
194
}
208
- log .Printf ("WARNING: %s has more than 10 pages of groups" , email )
195
+
196
+ log .Printf ("%s not found in any allowed groups" , email )
209
197
return false
210
198
}
211
199
0 commit comments