@@ -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-
28542832func newGrantForExternalPrincipal (grant * v2.Grant , principal * v2.Resource ) * v2.Grant {
28552833 newGrant := v2.Grant_builder {
28562834 Entitlement : grant .GetEntitlement (),
0 commit comments