diff --git a/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java b/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java index b7522d18ae..9a929e42d7 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java @@ -171,22 +171,19 @@ public class GroupServiceImpl extends DSpaceObjectServiceImpl implements EPerson currentUser = context.getCurrentUser(); //First check the special groups - boolean found = false; List specialGroups = context.getSpecialGroups(); if(CollectionUtils.isNotEmpty(specialGroups)) { - Iterator it = specialGroups.iterator(); - while (it.hasNext() && !found) { - Group next = it.next(); - found = StringUtils.equals(next.getName(), groupName); + for (Group specialGroup : specialGroups) + { + //Check if the current special group is the one we are looking for OR retrieve all groups & make a check here. + if(StringUtils.equals(specialGroup.getName(), groupName) || allMemberGroups(context, currentUser).contains(findByName(context, groupName))) + { + return true; + } } } - - if(found) { - return true; - } else { - //lookup eperson in normal groups and subgroups - return epersonInGroup(context, groupName, currentUser); - } + //lookup eperson in normal groups and subgroups + return epersonInGroup(context, groupName, currentUser); } else { return false; }