Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pkg/connector/collaborator.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion pkg/connector/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
10 changes: 6 additions & 4 deletions pkg/connector/folder.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -21,6 +22,8 @@ const (
collaboratorAccessEntitlement = "collaborator-access"
)

var _ connectorbuilder.ResourceSyncerV2 = (*folderBuilder)(nil)

type folderBuilder struct {
client *client.WorkatoClient
cache *collaboratorCache
Expand All @@ -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")
Expand Down Expand Up @@ -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

Expand All @@ -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
Expand Down
14 changes: 8 additions & 6 deletions pkg/connector/privilege.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -17,6 +18,8 @@ const (
assignedEntitlement = "assigned"
)

var _ connectorbuilder.ResourceSyncerV2 = (*privilegeBuilder)(nil)

type privilegeBuilder struct {
client *client.WorkatoClient
cache *collaboratorCache
Expand All @@ -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")
Expand All @@ -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{
Expand All @@ -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),
Expand Down
10 changes: 6 additions & 4 deletions pkg/connector/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@ 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"

v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
)

var _ connectorbuilder.ResourceSyncerV2 = (*projectBuilder)(nil)

type projectBuilder struct {
client *client.WorkatoClient
}
Expand All @@ -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")
Expand All @@ -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
}
Expand Down
11 changes: 5 additions & 6 deletions pkg/connector/role.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down Expand Up @@ -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),
Expand All @@ -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)
Expand Down