88 v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
99 "github.com/conductorone/baton-sdk/pkg/annotations"
1010 "github.com/conductorone/baton-sdk/pkg/pagination"
11- resources "github.com/conductorone/baton-sdk/pkg/types/resource"
11+ ent "github.com/conductorone/baton-sdk/pkg/types/entitlement"
12+ "github.com/conductorone/baton-sdk/pkg/types/grant"
13+ rs "github.com/conductorone/baton-sdk/pkg/types/resource"
1214 "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap"
1315 "go.uber.org/zap"
1416)
@@ -24,14 +26,6 @@ const (
2426 memberEntitlementSlug = "member"
2527)
2628
27- func adminEntitlementId (groupID * v2.ResourceId ) string {
28- return fmt .Sprintf ("entitlement:%s:admin" , groupID .Resource )
29- }
30-
31- func memberEntitlementId (groupID * v2.ResourceId ) string {
32- return fmt .Sprintf ("entitlement:%s:member" , groupID .Resource )
33- }
34-
3529type groupSyncer struct {
3630 resourceType * v2.ResourceType
3731 client * client.Client
@@ -66,61 +60,48 @@ func (s *groupSyncer) List(
6660 }
6761
6862 var ret []* v2.Resource
69- for _ , o := range groups {
70- var annos annotations.Annotations
7163
64+ for _ , o := range groups {
7265 p := make (map [string ]interface {})
7366
7467 if o .OrganizationID != nil {
7568 p ["organization_id" ] = o .GetOrgID ()
7669 }
7770
78- gt , err := resources .NewGroupTrait (resources .WithGroupProfile (p ))
71+ options := []rs.ResourceOption {
72+ rs .WithGroupTrait (rs .WithGroupProfile (p )),
73+ rs .WithParentResourceID (parentResourceID ),
74+ }
75+
76+ resource , err := rs .NewResource (o .GetName (), s .resourceType , formatObjectID (resourceTypeGroup .Id , o .ID ), options ... )
7977 if err != nil {
8078 return nil , "" , nil , err
8179 }
8280
83- annos .Append (gt )
84-
85- ret = append (ret , & v2.Resource {
86- DisplayName : o .GetName (),
87- Id : & v2.ResourceId {
88- ResourceType : s .resourceType .Id ,
89- Resource : formatObjectID (s .resourceType .Id , o .ID ),
90- },
91- ParentResourceId : parentResourceID ,
92- Annotations : annos ,
93- })
81+ ret = append (ret , resource )
9482 }
9583
9684 return ret , nextPageToken , nil , nil
9785}
9886
9987func (s * groupSyncer ) Entitlements (ctx context.Context , resource * v2.Resource , pToken * pagination.Token ) ([]* v2.Entitlement , string , annotations.Annotations , error ) {
100- var ret []* v2.Entitlement
101- var annos annotations.Annotations
102-
103- ret = append (ret , & v2.Entitlement {
104- Resource : resource ,
105- Id : memberEntitlementId (resource .Id ),
106- DisplayName : fmt .Sprintf ("%s Group Member" , resource .DisplayName ),
107- Description : fmt .Sprintf ("Is member of the %s organization" , resource .DisplayName ),
108- GrantableTo : []* v2.ResourceType {resourceTypeUser },
109- Annotations : annos ,
110- Purpose : v2 .Entitlement_PURPOSE_VALUE_ASSIGNMENT ,
111- Slug : memberEntitlementSlug ,
112- })
113-
114- ret = append (ret , & v2.Entitlement {
115- Resource : resource ,
116- Id : adminEntitlementId (resource .Id ),
117- DisplayName : fmt .Sprintf ("%s Group Admin" , resource .DisplayName ),
118- Description : fmt .Sprintf ("Is admin of the %s group" , resource .DisplayName ),
119- GrantableTo : []* v2.ResourceType {resourceTypeUser },
120- Annotations : annos ,
121- Purpose : v2 .Entitlement_PURPOSE_VALUE_ASSIGNMENT ,
122- Slug : adminEntitlementSlug ,
123- })
88+ ret := []* v2.Entitlement {
89+ ent .NewAssignmentEntitlement (
90+ resource ,
91+ memberEntitlementSlug ,
92+ ent .WithGrantableTo (resourceTypeUser ),
93+ ent .WithDisplayName (fmt .Sprintf ("%s Group Member" , resource .DisplayName )),
94+ ent .WithDescription (fmt .Sprintf ("Is member of the %s group" , resource .DisplayName )),
95+ ),
96+ ent .NewAssignmentEntitlement (
97+ resource ,
98+ adminEntitlementSlug ,
99+ ent .WithGrantableTo (resourceTypeUser ),
100+ ent .WithDisplayName (fmt .Sprintf ("%s Group Admin" , resource .DisplayName )),
101+ ent .WithDescription (fmt .Sprintf ("Is admin of the %s group" , resource .DisplayName )),
102+ ),
103+ }
104+
124105 return ret , "" , nil , nil
125106}
126107
@@ -142,22 +123,15 @@ func (s *groupSyncer) Grants(ctx context.Context, resource *v2.Resource, pToken
142123 if m .IsAdmin {
143124 level = "admin"
144125 }
145- entitlementID := fmt .Sprintf ("entitlement:%s:%s" , resource .Id .Resource , level )
146- principalID := formatObjectID (resourceTypeUser .Id , m .GetUserID ())
147-
148- ret = append (ret , & v2.Grant {
149- Entitlement : & v2.Entitlement {
150- Id : entitlementID ,
151- Resource : resource ,
152- },
153- Principal : & v2.Resource {
154- Id : & v2.ResourceId {
155- ResourceType : resourceTypeUser .Id ,
156- Resource : principalID ,
157- },
158- },
159- Id : fmt .Sprintf ("grant:%s:%s" , entitlementID , principalID ),
160- })
126+
127+ principalID , err := rs .NewResourceID (resourceTypeUser , formatObjectID (resourceTypeUser .Id , m .GetUserID ()))
128+ if err != nil {
129+ return nil , "" , nil , err
130+ }
131+
132+ newGrant := grant .NewGrant (resource , level , principalID )
133+
134+ ret = append (ret , newGrant )
161135 }
162136
163137 return ret , nextPageToken , nil , nil
0 commit comments