Skip to content

Commit cc658ea

Browse files
committed
Fix user search on keycloak instances without machine role
1 parent effa13b commit cc658ea

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

horreum-backend/src/main/java/io/hyperfoil/tools/horreum/svc/user/KeycloakUserBackend.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,22 @@ private static boolean isTeam(String role) {
6262

6363
@Override public List<UserService.UserData> searchUsers(String query) {
6464
try {
65-
Set<String> machineIds = keycloak.realm(realm).roles().get(Roles.MACHINE).getUserMembers(0, Integer.MAX_VALUE).stream().map(UserRepresentation::getId).collect(Collectors.toSet());
65+
Set<String> machineIds = safeMachineIds();
6666
return keycloak.realm(realm).users().search(query, null, null).stream().filter(rep -> !machineIds.contains(rep.getId())).map(KeycloakUserBackend::toUserInfo).toList();
6767
} catch (Throwable t) {
6868
throw ServiceException.serverError("Unable to search for users");
6969
}
7070
}
7171

72+
private Set<String> safeMachineIds() {
73+
try {
74+
return keycloak.realm(realm).roles().get(Roles.MACHINE).getUserMembers(0, Integer.MAX_VALUE).stream().map(UserRepresentation::getId).collect(Collectors.toSet());
75+
} catch (Exception e) {
76+
// ignore exception
77+
return Set.of();
78+
}
79+
}
80+
7281
@Override public List<UserService.UserData> info(List<String> usernames) {
7382
List<UserService.UserData> users = new ArrayList<>();
7483
for (String username : usernames) {

0 commit comments

Comments
 (0)