Skip to content

Commit e4836ad

Browse files
committed
preserve behavior in main for parsing ent ids
1 parent 8242ea1 commit e4836ad

File tree

2 files changed

+15
-32
lines changed

2 files changed

+15
-32
lines changed

pkg/sync/syncer.go

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2646,16 +2646,22 @@ func (s *syncer) processGrantsWithExternalPrincipals(ctx context.Context, princi
26462646
expandableEntitlementsResourceMap := make(map[string][]string)
26472647
if expandableAnno != nil {
26482648
for _, entId := range expandableAnno.GetEntitlementIds() {
2649-
resourceBID, slug, err := parseExpandableEntitlementID(entId)
2649+
parsedEnt, err := bid.ParseEntitlementBid(entId)
26502650
if err != nil {
2651-
l.Error("error parsing expandable entitlement id", zap.Any("entitlementId", entId), zap.Error(err))
2651+
l.Error("error parsing expandable entitlement bid", zap.Any("entitlementId", entId))
26522652
continue
26532653
}
2654+
resourceBID, err := bid.MakeBid(parsedEnt.GetResource())
2655+
if err != nil {
2656+
l.Error("error making resource bid", zap.Any("parsedEnt.Resource", parsedEnt.GetResource()))
2657+
continue
2658+
}
2659+
26542660
slugs, ok := expandableEntitlementsResourceMap[resourceBID]
26552661
if !ok {
26562662
slugs = make([]string, 0)
26572663
}
2658-
slugs = append(slugs, slug)
2664+
slugs = append(slugs, parsedEnt.GetSlug())
26592665
expandableEntitlementsResourceMap[resourceBID] = slugs
26602666
}
26612667
}
@@ -2823,34 +2829,6 @@ func userTraitContainsEmail(emails []*v2.UserTrait_Email, address string) bool {
28232829
})
28242830
}
28252831

2826-
// parseExpandableEntitlementID supports both legacy entitlement IDs
2827-
// (resourceType:resourceID:slug) and BID-based IDs (bid:e:...).
2828-
func parseExpandableEntitlementID(entitlementID string) (string, string, error) {
2829-
if parsedEnt, err := bid.ParseEntitlementBid(entitlementID); err == nil {
2830-
resourceBID, err := bid.MakeBid(parsedEnt.GetResource())
2831-
if err != nil {
2832-
return "", "", err
2833-
}
2834-
return resourceBID, parsedEnt.GetSlug(), nil
2835-
}
2836-
2837-
parts := strings.SplitN(entitlementID, ":", 3)
2838-
if len(parts) != 3 || parts[0] == "" || parts[1] == "" || parts[2] == "" {
2839-
return "", "", fmt.Errorf("unsupported entitlement id format: %q", entitlementID)
2840-
}
2841-
2842-
resourceBID, err := bid.MakeBid(v2.Resource_builder{
2843-
Id: v2.ResourceId_builder{
2844-
ResourceType: parts[0],
2845-
Resource: parts[1],
2846-
}.Build(),
2847-
}.Build())
2848-
if err != nil {
2849-
return "", "", err
2850-
}
2851-
return resourceBID, parts[2], nil
2852-
}
2853-
28542832
func newGrantForExternalPrincipal(grant *v2.Grant, principal *v2.Resource) *v2.Grant {
28552833
newGrant := v2.Grant_builder{
28562834
Entitlement: grant.GetEntitlement(),

pkg/sync/syncer_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
1212
reader_v2 "github.com/conductorone/baton-sdk/pb/c1/reader/v2"
1313
"github.com/conductorone/baton-sdk/pkg/annotations"
14+
"github.com/conductorone/baton-sdk/pkg/bid"
1415
"github.com/conductorone/baton-sdk/pkg/connectorstore"
1516
"github.com/conductorone/baton-sdk/pkg/dotc1z/manager"
1617
"github.com/conductorone/baton-sdk/pkg/logging"
@@ -1023,7 +1024,11 @@ func TestExternalResourceMatchIDWithExpandableRemapping(t *testing.T) {
10231024
placeholderResource := v2.Resource_builder{
10241025
Id: v2.ResourceId_builder{ResourceType: "group", Resource: "placeholder_role"}.Build(),
10251026
}.Build()
1026-
placeholderEntID := et.NewEntitlementID(placeholderResource, "member")
1027+
placeholderEntID, err := bid.MakeBid(v2.Entitlement_builder{
1028+
Resource: placeholderResource,
1029+
Slug: "member",
1030+
}.Build())
1031+
require.NoError(t, err)
10271032

10281033
// Create a grant with BOTH ExternalResourceMatchID AND GrantExpandable.
10291034
// The GrantExpandable references an entitlement on the PLACEHOLDER resource.

0 commit comments

Comments
 (0)