From 32611a19c63788b323c2dc069c8b55026ca40818 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Fri, 11 Apr 2025 18:48:11 +0300 Subject: [PATCH] fixed customer id check for CustomerData --- .../service/entitiy/EntityServiceTest.java | 23 +++++++++++++++++++ .../processor/AbstractQueryProcessor.java | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/application/src/test/java/org/thingsboard/server/service/entitiy/EntityServiceTest.java b/application/src/test/java/org/thingsboard/server/service/entitiy/EntityServiceTest.java index a2c3fc07c8..0f0aeb21be 100644 --- a/application/src/test/java/org/thingsboard/server/service/entitiy/EntityServiceTest.java +++ b/application/src/test/java/org/thingsboard/server/service/entitiy/EntityServiceTest.java @@ -1116,6 +1116,29 @@ public class EntityServiceTest extends AbstractControllerTest { assertThat(deviceName).isEqualTo(devices.get(0).getName()); } + @Test + public void testFindCustomerBySingleEntityFilter() { + SingleEntityFilter singleEntityFilter = new SingleEntityFilter(); + singleEntityFilter.setSingleEntity(customerId); + List entityFields = List.of( + new EntityKey(EntityKeyType.ENTITY_FIELD, "name") + ); + EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); + EntityDataQuery query = new EntityDataQuery(singleEntityFilter, pageLink, entityFields, null, null); + + //find by tenant + PageData result = findByQueryAndCheck(query, 1); + String customerName = result.getData().get(0).getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue(); + assertThat(customerName).isEqualTo(TEST_CUSTOMER_NAME); + + // find by customer user with generic permission + PageData customerResults = findByQueryAndCheck(customerId, query, 1); + + customerName = customerResults.getData().get(0).getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue(); + assertThat(customerName).isEqualTo(TEST_CUSTOMER_NAME); + } + + @Test public void testFindEntitiesByRelationEntityTypeFilter() { Customer customer = new Customer(); diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/query/processor/AbstractQueryProcessor.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/query/processor/AbstractQueryProcessor.java index 0c83ae4e61..d1f0d45984 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/query/processor/AbstractQueryProcessor.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/query/processor/AbstractQueryProcessor.java @@ -65,7 +65,8 @@ public abstract class AbstractQueryProcessor implements protected static boolean checkCustomerId(UUID customerId, EntityData ed) { return customerId.equals(ed.getCustomerId()) || (ed.getEntityType() == EntityType.DASHBOARD && - ed.getFields().getAssignedCustomerIds().contains(customerId)); + ed.getFields().getAssignedCustomerIds().contains(customerId) + || (ed.getEntityType() == EntityType.CUSTOMER && customerId.equals(ed.getId()))); } protected boolean matches(EntityData ed) {