@@ -3,6 +3,7 @@ package connector
33import (
44 "context"
55 "fmt"
6+ "slices"
67
78 "github.com/conductorone/baton-jamf/pkg/jamf"
89 v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
@@ -22,11 +23,10 @@ func (o *roleResourceType) ResourceType(_ context.Context) *v2.ResourceType {
2223 return o .resourceType
2324}
2425
25- var privileges = []string {
26+ var privilegeSets = []string {
2627 "Administrator" ,
2728 "Auditor" ,
2829 "Enrollment Only" ,
29- "Custom" ,
3030}
3131
3232// Create a new connector resource for a Jamf role.
@@ -56,7 +56,20 @@ func roleResource(ctx context.Context, role string, parentResourceID *v2.Resourc
5656
5757func (o * roleResourceType ) List (ctx context.Context , parentId * v2.ResourceId , token * pagination.Token ) ([]* v2.Resource , string , annotations.Annotations , error ) {
5858 var rv []* v2.Resource
59- for _ , privilege := range privileges {
59+ for _ , privilegeSet := range privilegeSets {
60+ rr , err := roleResource (ctx , privilegeSet , parentId )
61+ if err != nil {
62+ return nil , "" , nil , err
63+ }
64+ rv = append (rv , rr )
65+ }
66+
67+ res , err := o .client .GetPrivileges (ctx )
68+ if err != nil {
69+ return nil , "" , nil , err
70+ }
71+
72+ for _ , privilege := range res .Privileges {
6073 rr , err := roleResource (ctx , privilege , parentId )
6174 if err != nil {
6275 return nil , "" , nil , err
@@ -84,7 +97,7 @@ func (o *roleResourceType) Entitlements(_ context.Context, resource *v2.Resource
8497
8598func (o * roleResourceType ) Grants (ctx context.Context , resource * v2.Resource , token * pagination.Token ) ([]* v2.Grant , string , annotations.Annotations , error ) {
8699 var rv []* v2.Grant
87-
100+ isCustomPrivilege := ! slices . Contains ( privilegeSets , resource . Id . Resource )
88101 userAccounts , groups , err := o .client .GetAccounts (ctx )
89102 if err != nil {
90103 return nil , "" , nil , err
@@ -97,7 +110,12 @@ func (o *roleResourceType) Grants(ctx context.Context, resource *v2.Resource, to
97110 return nil , "" , nil , err
98111 }
99112
100- if resource .Id .Resource == group .PrivilegeSet {
113+ if isCustomPrivilege && slices .Contains (group .Privileges .JSSObjects , resource .Id .Resource ) {
114+ privilegeGrant := grant .NewGrant (resource , memberEntitlement , gr .Id )
115+ rv = append (rv , privilegeGrant )
116+ continue
117+ }
118+ if group .PrivilegeSet == resource .Id .Resource {
101119 privilegeGrant := grant .NewGrant (resource , memberEntitlement , gr .Id )
102120 rv = append (rv , privilegeGrant )
103121 }
@@ -110,12 +128,16 @@ func (o *roleResourceType) Grants(ctx context.Context, resource *v2.Resource, to
110128 return nil , "" , nil , err
111129 }
112130
113- if resource .Id .Resource == userAccount .PrivilegeSet {
131+ if isCustomPrivilege && slices .Contains (userAccount .Privileges .JSSObjects , resource .Id .Resource ) {
132+ privilegeGrant := grant .NewGrant (resource , memberEntitlement , gr .Id )
133+ rv = append (rv , privilegeGrant )
134+ continue
135+ }
136+ if userAccount .PrivilegeSet == resource .Id .Resource {
114137 privilegeGrant := grant .NewGrant (resource , memberEntitlement , gr .Id )
115138 rv = append (rv , privilegeGrant )
116139 }
117140 }
118-
119141 return rv , "" , nil , nil
120142}
121143
0 commit comments