diff --git a/api/src/main/java/org/openmrs/api/impl/UserServiceImpl.java b/api/src/main/java/org/openmrs/api/impl/UserServiceImpl.java index 6157f75fe2ac..d4be9073df90 100644 --- a/api/src/main/java/org/openmrs/api/impl/UserServiceImpl.java +++ b/api/src/main/java/org/openmrs/api/impl/UserServiceImpl.java @@ -587,20 +587,20 @@ public List getUsers(String name, List roles, boolean includeRetired if (roles == null) { roles = new ArrayList<>(); } - - // add the requested roles and all child roles for consideration - Set allRoles = new HashSet<>(); - for (Role r : roles) { - allRoles.add(r); - allRoles.addAll(r.getAllChildRoles()); - } - + // if the authenticated role is in the list of searched roles, then all // persons should be searched Role authRole = getRole(RoleConstants.AUTHENTICATED); if (roles.contains(authRole)) { return dao.getUsers(name, new ArrayList<>(), includeRetired, start, length); } + + // add the requested roles and all child roles for consideration + Set allRoles = new HashSet<>(); + for (Role r : roles) { + allRoles.add(r); + allRoles.addAll(r.getAllChildRoles()); + } return dao.getUsers(name, new ArrayList<>(allRoles), includeRetired, start, length); }