diff --git a/pkg/connector/collaborator.go b/pkg/connector/collaborator.go index bae412c..753872d 100644 --- a/pkg/connector/collaborator.go +++ b/pkg/connector/collaborator.go @@ -5,6 +5,7 @@ import ( "fmt" "strconv" + "github.com/conductorone/baton-sdk/pkg/connectorbuilder" "github.com/conductorone/baton-sdk/pkg/types/grant" "github.com/conductorone/baton-sdk/pkg/types/resource" "github.com/conductorone/baton-sdk/pkg/types/sessions" @@ -19,6 +20,8 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" ) +var _ connectorbuilder.ResourceSyncerV2 = (*collaboratorBuilder)(nil) + type collaboratorBuilder struct { client *client.WorkatoClient cache *collaboratorCache diff --git a/pkg/connector/connector.go b/pkg/connector/connector.go index 58bd3e3..a4b846d 100644 --- a/pkg/connector/connector.go +++ b/pkg/connector/connector.go @@ -28,7 +28,7 @@ type Connector struct { func (d *Connector) ResourceSyncers(ctx context.Context) []connectorbuilder.ResourceSyncerV2 { return []connectorbuilder.ResourceSyncerV2{ newCollaboratorBuilder(d.client, d.env, d.disableCustomRolesSync), - newPrivilegeBuilder(d.client, d.env), + newPrivilegeBuilder(d.client), newRoleBuilder(d.client, d.env, d.disableCustomRolesSync), newFolderBuilder(d.client, d.disableCustomRolesSync), newProjectBuilder(d.client), diff --git a/pkg/connector/folder.go b/pkg/connector/folder.go index ff6c113..18f51ab 100644 --- a/pkg/connector/folder.go +++ b/pkg/connector/folder.go @@ -8,6 +8,7 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" "go.uber.org/zap" + "github.com/conductorone/baton-sdk/pkg/connectorbuilder" "github.com/conductorone/baton-sdk/pkg/types/entitlement" "github.com/conductorone/baton-sdk/pkg/types/grant" "github.com/conductorone/baton-workato/pkg/connector/client" @@ -21,6 +22,8 @@ const ( collaboratorAccessEntitlement = "collaborator-access" ) +var _ connectorbuilder.ResourceSyncerV2 = (*folderBuilder)(nil) + type folderBuilder struct { client *client.WorkatoClient cache *collaboratorCache @@ -31,8 +34,7 @@ func (o *folderBuilder) ResourceType(ctx context.Context) *v2.ResourceType { return folderResourceType } -// List returns all the users from the database as resource objects. -// Users include a UserTrait because they are the 'shape' of a standard user. +// List returns all the folders and project folders. func (o *folderBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId, attr rs.SyncOpAttrs) ([]*v2.Resource, *rs.SyncOpResults, error) { l := ctxzap.Extract(ctx) l.Debug("Listing folders") @@ -92,7 +94,7 @@ func (o *folderBuilder) List(ctx context.Context, parentResourceID *v2.ResourceI return nil, nil, nil } -// Entitlements always returns an empty slice for users. +// Entitlements returns an entitlement for the folder to be assigned to a collaborator. func (o *folderBuilder) Entitlements(_ context.Context, resource *v2.Resource, _ rs.SyncOpAttrs) ([]*v2.Entitlement, *rs.SyncOpResults, error) { var rv []*v2.Entitlement @@ -106,7 +108,7 @@ func (o *folderBuilder) Entitlements(_ context.Context, resource *v2.Resource, _ return rv, nil, nil } -// Grants always returns an empty slice for users since they don't have any entitlements. +// Grants returns the roles granted to a folder. func (o *folderBuilder) Grants(ctx context.Context, resource *v2.Resource, attr rs.SyncOpAttrs) ([]*v2.Grant, *rs.SyncOpResults, error) { type Bag struct { ResourceTypeID string diff --git a/pkg/connector/privilege.go b/pkg/connector/privilege.go index 38ceef1..0d19b3b 100644 --- a/pkg/connector/privilege.go +++ b/pkg/connector/privilege.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "github.com/conductorone/baton-sdk/pkg/connectorbuilder" rs "github.com/conductorone/baton-sdk/pkg/types/resource" "github.com/conductorone/baton-workato/pkg/connector/client" "github.com/conductorone/baton-workato/pkg/connector/workato" @@ -17,6 +18,8 @@ const ( assignedEntitlement = "assigned" ) +var _ connectorbuilder.ResourceSyncerV2 = (*privilegeBuilder)(nil) + type privilegeBuilder struct { client *client.WorkatoClient cache *collaboratorCache @@ -26,8 +29,7 @@ func (o *privilegeBuilder) ResourceType(ctx context.Context) *v2.ResourceType { return privilegeResourceType } -// List returns all the users from the database as resource objects. -// Users include a UserTrait because they are the 'shape' of a standard user. +// List returns all the privileges. func (o *privilegeBuilder) List(ctx context.Context, _ *v2.ResourceId, _ rs.SyncOpAttrs) ([]*v2.Resource, *rs.SyncOpResults, error) { l := ctxzap.Extract(ctx) l.Debug("Listing privileges") @@ -47,7 +49,7 @@ func (o *privilegeBuilder) List(ctx context.Context, _ *v2.ResourceId, _ rs.Sync return rv, nil, nil } -// Entitlements always returns an empty slice for users. +// Entitlements returns an entitlement for the privilege to be assigned to a collaborator. func (o *privilegeBuilder) Entitlements(_ context.Context, resource *v2.Resource, _ rs.SyncOpAttrs) ([]*v2.Entitlement, *rs.SyncOpResults, error) { var rv []*v2.Entitlement assigmentOptions := []entitlement.EntitlementOption{ @@ -60,12 +62,12 @@ func (o *privilegeBuilder) Entitlements(_ context.Context, resource *v2.Resource return rv, nil, nil } -// Grants always returns an empty slice for users since they don't have any entitlements. -func (o *privilegeBuilder) Grants(ctx context.Context, resource *v2.Resource, attr rs.SyncOpAttrs) ([]*v2.Grant, *rs.SyncOpResults, error) { +// Grants returns an empty slice. Grants for privileges are emitted when listing collaborator grants. +func (o *privilegeBuilder) Grants(_ context.Context, _ *v2.Resource, _ rs.SyncOpAttrs) ([]*v2.Grant, *rs.SyncOpResults, error) { return nil, nil, nil } -func newPrivilegeBuilder(client *client.WorkatoClient, env workato.Environment) *privilegeBuilder { +func newPrivilegeBuilder(client *client.WorkatoClient) *privilegeBuilder { return &privilegeBuilder{ client: client, cache: newCollaboratorCache(client), diff --git a/pkg/connector/project.go b/pkg/connector/project.go index 862261a..001b00c 100644 --- a/pkg/connector/project.go +++ b/pkg/connector/project.go @@ -3,6 +3,7 @@ package connector import ( "context" + "github.com/conductorone/baton-sdk/pkg/connectorbuilder" rs "github.com/conductorone/baton-sdk/pkg/types/resource" "github.com/conductorone/baton-workato/pkg/connector/client" "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" @@ -10,6 +11,8 @@ import ( v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2" ) +var _ connectorbuilder.ResourceSyncerV2 = (*projectBuilder)(nil) + type projectBuilder struct { client *client.WorkatoClient } @@ -18,8 +21,7 @@ func (o *projectBuilder) ResourceType(ctx context.Context) *v2.ResourceType { return projectResourceType } -// List returns all the users from the database as resource objects. -// Users include a UserTrait because they are the 'shape' of a standard user. +// List returns all the projects. func (o *projectBuilder) List(ctx context.Context, _ *v2.ResourceId, attr rs.SyncOpAttrs) ([]*v2.Resource, *rs.SyncOpResults, error) { l := ctxzap.Extract(ctx) l.Debug("Listing projects") @@ -44,12 +46,12 @@ func (o *projectBuilder) List(ctx context.Context, _ *v2.ResourceId, attr rs.Syn }, nil } -// Entitlements always returns an empty slice for users. +// Entitlements returns an empty slice since projects are not assignable. func (o *projectBuilder) Entitlements(_ context.Context, _ *v2.Resource, _ rs.SyncOpAttrs) ([]*v2.Entitlement, *rs.SyncOpResults, error) { return nil, nil, nil } -// Grants always returns an empty slice for users since they don't have any entitlements. +// Grants returns an empty slice since projects are not grantable. func (o *projectBuilder) Grants(_ context.Context, _ *v2.Resource, _ rs.SyncOpAttrs) ([]*v2.Grant, *rs.SyncOpResults, error) { return nil, nil, nil } diff --git a/pkg/connector/role.go b/pkg/connector/role.go index afa551c..600de7e 100644 --- a/pkg/connector/role.go +++ b/pkg/connector/role.go @@ -38,9 +38,8 @@ func (o *roleBuilder) ResourceType(ctx context.Context) *v2.ResourceType { return roleResourceType } -// List returns all the users from the database as resource objects. -// Users include a UserTrait because they are the 'shape' of a standard user. -func (o *roleBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId, attr rs.SyncOpAttrs) ([]*v2.Resource, *rs.SyncOpResults, error) { +// List returns all the Workato base roles and custom roles. +func (o *roleBuilder) List(ctx context.Context, _ *v2.ResourceId, attr rs.SyncOpAttrs) ([]*v2.Resource, *rs.SyncOpResults, error) { l := ctxzap.Extract(ctx) l.Debug("Listing roles") @@ -86,8 +85,8 @@ func (o *roleBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId, }, nil } -// Entitlements always returns an empty slice for users. -func (o *roleBuilder) Entitlements(_ context.Context, resource *v2.Resource, attr rs.SyncOpAttrs) ([]*v2.Entitlement, *rs.SyncOpResults, error) { +// Entitlements returns an entitlement for the role to be assigned to a collaborator. +func (o *roleBuilder) Entitlements(_ context.Context, resource *v2.Resource, _ rs.SyncOpAttrs) ([]*v2.Entitlement, *rs.SyncOpResults, error) { var rv []*v2.Entitlement assigmentOptions := []entitlement.EntitlementOption{ entitlement.WithGrantableTo(collaboratorResourceType), @@ -99,7 +98,7 @@ func (o *roleBuilder) Entitlements(_ context.Context, resource *v2.Resource, att return rv, nil, nil } -// Grants always returns an empty slice for users since they don't have any entitlements. +// Grants returns the privileges granted to a role. func (o *roleBuilder) Grants(ctx context.Context, resource *v2.Resource, attr rs.SyncOpAttrs) ([]*v2.Grant, *rs.SyncOpResults, error) { l := ctxzap.Extract(ctx) rv := make([]*v2.Grant, 0)