Skip to content
Snippets Groups Projects

fix: :bug: claim modifiers in arrays retain only unique values

Merged Ghost User requested to merge dBucik/replace_modifier_remove_duplicates into main
1 file
+ 7
3
Compare changes
  • Side-by-side
  • Inline
@@ -303,18 +303,22 @@ public class PerunUserInfoCacheLoader extends CacheLoader<UserInfoCacheKey, User
return TextNode.valueOf(modifier.modify(claimInJson.asText()));
} else if (claimInJson.isArray()) {
ArrayNode arrayNode = (ArrayNode) claimInJson;
ArrayNode newArrayNode = JsonNodeFactory.instance.arrayNode();
Set<TextNode> uniqueValues = new HashSet<>();
for (int i = 0; i < arrayNode.size(); i++) {
JsonNode item = arrayNode.get(i);
if (item.isTextual()) {
String original = item.asText();
String modified = modifier.modify(original);
if (!modifier.isReplaceOldValue()) {
newArrayNode.add(TextNode.valueOf(original));
uniqueValues.add(TextNode.valueOf(original));
}
newArrayNode.add(TextNode.valueOf(modified));
uniqueValues.add(TextNode.valueOf(modified));
}
}
ArrayNode newArrayNode = JsonNodeFactory.instance.arrayNode();
for (TextNode child : uniqueValues) {
newArrayNode.add(child);
}
return newArrayNode;
} else {
log.warn("Original value is neither string nor array of strings - cannot modify values");
Loading