Skip to content

Commit 8ab979c

Browse files
authored
Merge pull request #75 from ConductorOne/BB679
[BB-679] baton-jira-datacenter: fix entitlements are missing error
2 parents cfdb0e2 + fa433f1 commit 8ab979c

File tree

2 files changed

+40
-36
lines changed

2 files changed

+40
-36
lines changed

pkg/client/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ func (client *Client) GetGroupLabelRoles(ctx context.Context, groupName string)
420420
groupRoles []Labels
421421
)
422422
req, err := getRequest(ctx, client, allGroupsV2, Query{
423-
"query": "",
423+
"query": groupName,
424424
})
425425
if err != nil {
426426
return nil, err

pkg/connector/group.go

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"github.com/conductorone/baton-jira-datacenter/pkg/client"
1919
)
2020

21+
const _member = "member"
22+
2123
type groupBuilder struct {
2224
client *client.Client
2325
}
@@ -69,33 +71,34 @@ func (g *groupBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId
6971
}
7072

7173
func (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

Comments
 (0)