@@ -18,6 +18,8 @@ import (
1818 "github.com/conductorone/baton-jira-datacenter/pkg/client"
1919)
2020
21+ const _member = "member"
22+
2123type groupBuilder struct {
2224 client * client.Client
2325}
@@ -69,33 +71,34 @@ func (g *groupBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId
6971}
7072
7173func (g * groupBuilder ) Entitlements (ctx context.Context , resource * v2.Resource , _ * pagination.Token ) ([]* v2.Entitlement , string , annotations.Annotations , error ) {
72- var rv []* v2.Entitlement
7374 groupId := resource .Id .Resource
74- groupRoles , err := g .client .GetGroupRole (ctx )
75+ groupRoles , err := g .client .GetGroupLabelRoles (ctx , groupId )
7576 if err != nil {
7677 return nil , "" , nil , err
7778 }
7879
79- for _ , group := range groupRoles {
80- if group .Name != groupId {
81- continue
80+ rv := make ([]* v2.Entitlement , 0 , len (groupRoles )+ 1 )
81+ rv = append (rv , ent .NewAssignmentEntitlement (
82+ resource ,
83+ _member ,
84+ ent .WithGrantableTo (userResourceType ),
85+ ent .WithDisplayName (fmt .Sprintf ("%s Group Member" , resource .DisplayName )),
86+ ent .WithDescription (fmt .Sprintf ("member access to %s group in Jira DC" , resource .DisplayName )),
87+ ))
88+ for _ , groupRole := range groupRoles {
89+ permission := groupRole .Text
90+ // create entitlements for each project role
91+ permissionOptions := []ent.EntitlementOption {
92+ ent .WithGrantableTo (userResourceType , groupResourceType ),
93+ ent .WithDisplayName (fmt .Sprintf ("%s Group %s" , resource .DisplayName , permission )),
94+ ent .WithDescription (fmt .Sprintf ("%s access to %s group in Jira DC" , titleCase (permission ), resource .DisplayName )),
8295 }
8396
84- for _ , groupRole := range group .Labels {
85- permission := groupRole .Text
86- // create entitlements for each project role
87- permissionOptions := []ent.EntitlementOption {
88- ent .WithGrantableTo (userResourceType , groupResourceType ),
89- ent .WithDisplayName (fmt .Sprintf ("%s Group %s" , resource .DisplayName , permission )),
90- ent .WithDescription (fmt .Sprintf ("%s access to %s group in Jira DC" , titleCase (permission ), resource .DisplayName )),
91- }
92-
93- rv = append (rv , ent .NewPermissionEntitlement (
94- resource ,
95- permission ,
96- permissionOptions ... ,
97- ))
98- }
97+ rv = append (rv , ent .NewPermissionEntitlement (
98+ resource ,
99+ permission ,
100+ permissionOptions ... ,
101+ ))
99102 }
100103
101104 return rv , "" , nil , nil
@@ -111,33 +114,34 @@ func (g *groupBuilder) Grants(ctx context.Context, resource *v2.Resource, pToken
111114
112115 l := ctxzap .Extract (ctx )
113116
117+ roles , err := g .client .GetGroupLabelRoles (ctx , groupId )
118+ if err != nil {
119+ return nil , "" , nil , err
120+ }
121+
114122 for _ , member := range groupMembers {
115- roles , err := g .client .GetGroupLabelRoles (ctx , groupId )
123+ user , err := g .client .GetUser (ctx , member .Name )
124+ if err != nil {
125+ if errors .Is (err , client .ErrUserNotFound ) {
126+ l .Warn ("User not found" , zap .String ("userId" , member .Name ))
127+ continue
128+ }
129+ return nil , "" , nil , err
130+ }
131+ ur , err := userResource (user )
116132 if err != nil {
117133 return nil , "" , nil , err
118134 }
119135
120136 for _ , role := range roles {
121137 permission := role .Text
122- user , err := g .client .GetUser (ctx , member .Name )
123- if err != nil {
124- if errors .Is (err , client .ErrUserNotFound ) {
125- l .Warn ("User not found" , zap .String ("userId" , member .Name ))
126- continue
127- }
128- return nil , "" , nil , err
129- }
130-
131- ur , err := userResource (user )
132- if err != nil {
133- return nil , "" , nil , err
134- }
135138
136139 membershipGrant := grant .NewGrant (resource , permission , ur .Id )
137140 rv = append (rv , membershipGrant )
138141 }
139- }
140142
143+ rv = append (rv , grant .NewGrant (resource , _member , ur .Id ))
144+ }
141145 return rv , "" , nil , nil
142146}
143147
0 commit comments