Skip to content

Commit 5781f33

Browse files
committed
Address comments
Signed-off-by: JeffMboya <jangina.mboya@gmail.com> Address comments Signed-off-by: JeffMboya <jangina.mboya@gmail.com> Address comments Signed-off-by: JeffMboya <jangina.mboya@gmail.com> Address comments Signed-off-by: JeffMboya <jangina.mboya@gmail.com> Address comments Signed-off-by: JeffMboya <jangina.mboya@gmail.com>
1 parent 08ff1d1 commit 5781f33

File tree

1 file changed

+13
-37
lines changed

1 file changed

+13
-37
lines changed

domains/service.go

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package domains
55

66
import (
77
"context"
8-
"fmt"
98
"time"
109

1110
"github.com/absmach/supermq"
@@ -359,28 +358,23 @@ func (svc *service) RoleRemoveMembers(ctx context.Context, session authn.Session
359358

360359
ro, err := svc.repo.RetrieveEntityRole(ctx, entityID, roleID)
361360
if err != nil {
362-
return errors.Wrap(svcerr.ErrViewEntity, fmt.Errorf("failed to retrieve role '%s' for entity '%s': %w", roleID, entityID, err))
361+
return errors.Wrap(svcerr.ErrViewEntity, err)
363362
}
364363

365-
isBuiltInRole := false
366364
if _, ok := svc.ProvisionManageService.BuiltInRoles[roles.BuiltInRoleName(ro.Name)]; ok {
367-
isBuiltInRole = true
368-
}
369-
370-
if isBuiltInRole {
371-
membersPage, listErr := svc.repo.RoleListMembers(ctx, ro.ID, 0, 0)
372-
if listErr != nil {
373-
return errors.Wrap(svcerr.ErrViewEntity, fmt.Errorf("failed to list members for built-in role '%s' to check count: %w", ro.Name, listErr))
365+
membersPage, err := svc.repo.RoleListMembers(ctx, ro.ID, 0, 0)
366+
if err != nil {
367+
return errors.Wrap(svcerr.ErrViewEntity, err)
374368
}
375-
376369
if membersPage.Total <= uint64(len(members)) {
377-
return errors.Wrap(svcerr.ErrRemoveEntity, fmt.Errorf("built-in role '%s' must retain at least one member. Attempting to remove %d member(s) from %d would leave too few.", ro.Name, len(members), membersPage.Total))
370+
errAtLeastOneMemberRetain := errors.New("at least one member should be in built-in role")
371+
return errors.Wrap(svcerr.ErrRemoveEntity, errAtLeastOneMemberRetain)
378372
}
379373
}
380374

381375
for _, memberID := range members {
382376
if err := svc.repo.DeleteInvitation(ctx, memberID, entityID); err != nil && err != repoerr.ErrNotFound {
383-
return errors.Wrap(svcerr.ErrRemoveEntity, fmt.Errorf("failed to delete invitation for member '%s' in domain '%s' from role '%s': %w", memberID, entityID, ro.Name, err))
377+
return errors.Wrap(svcerr.ErrRemoveEntity, err)
384378
}
385379
}
386380

@@ -390,37 +384,19 @@ func (svc *service) RoleRemoveMembers(ctx context.Context, session authn.Session
390384
func (svc *service) RoleRemoveAllMembers(ctx context.Context, session authn.Session, entityID, roleID string) error {
391385
ro, err := svc.repo.RetrieveEntityRole(ctx, entityID, roleID)
392386
if err != nil {
393-
return errors.Wrap(svcerr.ErrViewEntity, fmt.Errorf("failed to retrieve role '%s' for entity '%s': %w", roleID, entityID, err))
387+
return errors.Wrap(svcerr.ErrViewEntity, err)
394388
}
395389

396-
isBuiltInRole := false
397390
if _, ok := svc.ProvisionManageService.BuiltInRoles[roles.BuiltInRoleName(ro.Name)]; ok {
398-
isBuiltInRole = true
399-
}
400-
401-
if isBuiltInRole {
402-
membersPage, listErr := svc.repo.RoleListMembers(ctx, ro.ID, 0, 0)
403-
if listErr != nil {
404-
return errors.Wrap(svcerr.ErrViewEntity, fmt.Errorf("failed to list members for built-in role '%s' to check count: %w", ro.Name, listErr))
391+
membersPage, err := svc.repo.RoleListMembers(ctx, ro.ID, 0, 0)
392+
if err != nil {
393+
return errors.Wrap(svcerr.ErrViewEntity, err)
405394
}
406-
407395
if membersPage.Total > 0 {
408-
return errors.Wrap(svcerr.ErrRemoveEntity, fmt.Errorf("built-in role '%s' must retain at least one member and cannot have all members removed", ro.Name))
396+
errAtLeastOneMemberRetain := errors.New("at least one member should be in built-in role")
397+
return errors.Wrap(svcerr.ErrRemoveEntity, errAtLeastOneMemberRetain)
409398
}
410399
}
411400

412-
currentMembersPage, listErr := svc.repo.RoleListMembers(ctx, ro.ID, 0, 0)
413-
if listErr != nil {
414-
return errors.Wrap(svcerr.ErrViewEntity, fmt.Errorf("failed to list members of role '%s' for invitation cleanup: %w", ro.Name, listErr))
415-
}
416-
417-
if len(currentMembersPage.Members) > 0 {
418-
for _, member := range currentMembersPage.Members {
419-
memberID := string(member)
420-
if err := svc.repo.DeleteInvitation(ctx, memberID, entityID); err != nil && err != repoerr.ErrNotFound {
421-
return errors.Wrap(svcerr.ErrRemoveEntity, fmt.Errorf("failed to delete invitation for member '%s' in domain '%s' from role '%s': %w", memberID, entityID, ro.Name, err))
422-
}
423-
}
424-
}
425401
return svc.ProvisionManageService.RoleRemoveAllMembers(ctx, session, entityID, roleID)
426402
}

0 commit comments

Comments
 (0)