Skip to content
Snippets Groups Projects
Unverified Commit 658a2cc4 authored by Joel Speed's avatar Joel Speed
Browse files

Make directory service during init

parent 554870ce
No related branches found
No related tags found
No related merge requests found
...@@ -62,6 +62,12 @@ func (c *Config) Open(id string, logger log.Logger) (conn connector.Connector, e ...@@ -62,6 +62,12 @@ func (c *Config) Open(id string, logger log.Logger) (conn connector.Connector, e
scopes = append(scopes, "profile", "email") scopes = append(scopes, "profile", "email")
} }
srv, err := createDirectoryService(c.ServiceAccountFilePath, c.AdminEmail)
if err != nil {
cancel()
return nil, fmt.Errorf("could not create directory service: %v", err)
}
clientID := c.ClientID clientID := c.ClientID
return &googleConnector{ return &googleConnector{
redirectURI: c.RedirectURI, redirectURI: c.RedirectURI,
...@@ -80,6 +86,7 @@ func (c *Config) Open(id string, logger log.Logger) (conn connector.Connector, e ...@@ -80,6 +86,7 @@ func (c *Config) Open(id string, logger log.Logger) (conn connector.Connector, e
hostedDomains: c.HostedDomains, hostedDomains: c.HostedDomains,
serviceAccountFilePath: c.ServiceAccountFilePath, serviceAccountFilePath: c.ServiceAccountFilePath,
adminEmail: c.AdminEmail, adminEmail: c.AdminEmail,
adminSrv: srv,
}, nil }, nil
} }
...@@ -98,6 +105,7 @@ type googleConnector struct { ...@@ -98,6 +105,7 @@ type googleConnector struct {
hostedDomains []string hostedDomains []string
serviceAccountFilePath string serviceAccountFilePath string
adminEmail string adminEmail string
adminSrv *admin.Service
} }
func (c *googleConnector) Close() error { func (c *googleConnector) Close() error {
...@@ -219,12 +227,7 @@ func (c *googleConnector) createIdentity(ctx context.Context, identity connector ...@@ -219,12 +227,7 @@ func (c *googleConnector) createIdentity(ctx context.Context, identity connector
// getGroups creates a connection to the admin directory service and lists // getGroups creates a connection to the admin directory service and lists
// all groups the user is a member of // all groups the user is a member of
func (c *googleConnector) getGroups(email string) ([]string, error) { func (c *googleConnector) getGroups(email string) ([]string, error) {
srv, err := createDirectoryService(c.serviceAccountFilePath, c.adminEmail) groupsList, err := c.adminSrv.Groups.List().UserKey(email).Do()
if err != nil {
return nil, fmt.Errorf("could not create directory service: %v", err)
}
groupsList, err := srv.Groups.List().UserKey(email).Do()
if err != nil { if err != nil {
return nil, fmt.Errorf("could not list groups: %v", err) return nil, fmt.Errorf("could not list groups: %v", err)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment