|
|
|
@ -283,7 +283,9 @@ func (c *googleConnector) getGroups(email string, fetchTransitiveGroupMembership |
|
|
|
// the google admin api. If no serviceAccountFilePath is defined, the application default credential
|
|
|
|
// the google admin api. If no serviceAccountFilePath is defined, the application default credential
|
|
|
|
// is used.
|
|
|
|
// is used.
|
|
|
|
func createDirectoryService(serviceAccountFilePath, email string, logger log.Logger) (*admin.Service, error) { |
|
|
|
func createDirectoryService(serviceAccountFilePath, email string, logger log.Logger) (*admin.Service, error) { |
|
|
|
if email == "" { |
|
|
|
// We know impersonation is required when using a service account credential
|
|
|
|
|
|
|
|
// TODO: or is it?
|
|
|
|
|
|
|
|
if email == "" && serviceAccountFilePath != "" { |
|
|
|
return nil, fmt.Errorf("directory service requires adminEmail") |
|
|
|
return nil, fmt.Errorf("directory service requires adminEmail") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -308,7 +310,12 @@ func createDirectoryService(serviceAccountFilePath, email string, logger log.Log |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return nil, fmt.Errorf("unable to parse credentials to config: %v", err) |
|
|
|
return nil, fmt.Errorf("unable to parse credentials to config: %v", err) |
|
|
|
} |
|
|
|
} |
|
|
|
config.Subject = email |
|
|
|
|
|
|
|
|
|
|
|
// Only attempt impersonation when there is a user configured
|
|
|
|
|
|
|
|
if email != "" { |
|
|
|
|
|
|
|
config.Subject = email |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return admin.NewService(ctx, option.WithHTTPClient(config.Client(ctx))) |
|
|
|
return admin.NewService(ctx, option.WithHTTPClient(config.Client(ctx))) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|