Skip to content

Commit f587f9b

Browse files
committed
Fix settings default Access List eligibility
1 parent 7ce10d3 commit f587f9b

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

lib/services/local/access_list.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,10 @@ func keepAWSIdentityCenterLabels(old, new *accesslist.AccessListMember) {
10931093
// setMemberEligibility sets the member eligibility status to eligible if possible to avoid
10941094
// unnecessary updates via access list eligibility reconciler.
10951095
func setMemberEligibility(acl *accesslist.AccessList, member *accesslist.AccessListMember) {
1096+
if isEligibilityStatusKnown(member.Spec.IneligibleStatus) {
1097+
// If the status was explicit set doesn't change it.
1098+
return
1099+
}
10961100
if !member.Spec.Expires.IsZero() || !acl.Spec.MembershipRequires.IsEmpty() {
10971101
// If the member has an expiration date or the Access List Requirements are not empty
10981102
// we cant assume the eligibility status. That needs to be calculated
@@ -1112,8 +1116,22 @@ func setOwnersEligibility(accessList *accesslist.AccessList) {
11121116
}
11131117

11141118
for i := range accessList.Spec.Owners {
1119+
if isEligibilityStatusKnown(accessList.Spec.Owners[i].IneligibleStatus) {
1120+
// If the status was explicit set doesn't change it.
1121+
continue
1122+
}
11151123
// If the ownership requirements are empty, all owners are eligible.
11161124
// There is no owner ineligibility expiration date
11171125
accessList.Spec.Owners[i].IneligibleStatus = accesslistv1.IneligibleStatus_INELIGIBLE_STATUS_ELIGIBLE.String()
11181126
}
11191127
}
1128+
1129+
// isEligibilityStatusKnown returns true if the status is known (not empty and not undefined)
1130+
func isEligibilityStatusKnown(status string) bool {
1131+
switch status {
1132+
case accesslistv1.IneligibleStatus_INELIGIBLE_STATUS_UNSPECIFIED.String(), "":
1133+
return false
1134+
default:
1135+
return true
1136+
}
1137+
}

lib/services/local/access_list_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,15 @@ func TestAccessListMemberOwnerEligibility(t *testing.T) {
15041504
require.NoError(t, err)
15051505
require.Empty(t, m2.Spec.IneligibleStatus)
15061506

1507+
require.NoError(t, service.DeleteAllAccessLists(ctx))
1508+
member := newAccessListMember(t, acl.GetName(), "member1", withExpire(time.Time{}))
1509+
member.Spec.IneligibleStatus = accesslistv1.IneligibleStatus_INELIGIBLE_STATUS_USER_NOT_EXIST.String()
1510+
_, _, err = service.UpsertAccessListWithMembers(ctx, acl, []*accesslist.AccessListMember{member})
1511+
require.NoError(t, err)
1512+
1513+
m3, err := service.GetAccessListMember(ctx, acl.GetName(), "member1")
1514+
require.NoError(t, err)
1515+
require.Equal(t, accesslistv1.IneligibleStatus_INELIGIBLE_STATUS_USER_NOT_EXIST.String(), m3.Spec.IneligibleStatus)
15071516
}
15081517

15091518
type newAccessListOptions struct {

0 commit comments

Comments
 (0)