Github user mcgilman commented on a diff in the pull request: https://github.com/apache/nifi/pull/2515#discussion_r173869295 --- Diff: nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/CurrentUserEndpointMerger.java --- @@ -53,6 +54,23 @@ protected void mergeResponses(final CurrentUserEntity clientEntity, final Map<No mergePermissions(clientEntity.getPoliciesPermissions(), entity.getPoliciesPermissions()); mergePermissions(clientEntity.getProvenancePermissions(), entity.getProvenancePermissions()); mergePermissions(clientEntity.getTenantsPermissions(), entity.getTenantsPermissions()); + mergePermissions(clientEntity.getSystemPermissions(), entity.getSystemPermissions()); + mergePermissions(clientEntity.getTenantsPermissions(), entity.getTenantsPermissions()); + + final Set<ComponentRestrictionPermissionDTO> clientEntityComponentRestrictionsPermissions = clientEntity.getComponentRestrictionPermissions(); + final Set<ComponentRestrictionPermissionDTO> entityComponentRestrictionsPermissions = entity.getComponentRestrictionPermissions(); + + // only retain the component restriction permissions in common + clientEntityComponentRestrictionsPermissions.retainAll(entityComponentRestrictionsPermissions); + + // merge the component restriction permissions + clientEntityComponentRestrictionsPermissions.forEach(clientEntityPermission -> { + final ComponentRestrictionPermissionDTO entityPermission = entityComponentRestrictionsPermissions.stream().filter(entityComponentRestrictionsPermission -> { + return entityComponentRestrictionsPermission.getRequiredPermission().getId().equals(clientEntityPermission.getRequiredPermission().getId()); + }).findFirst().orElse(null); --- End diff -- Because we're doing a retainAll right before this we know that both collections will each have an entry for the current clientEntityPermission. I will update to use get() instead.
---