From 32611a19c63788b323c2dc069c8b55026ca40818 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Fri, 11 Apr 2025 18:48:11 +0300 Subject: [PATCH 1/2] 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) { From 3e41cbef874a0b2f5f8f6db8cf85eae36f6d8bb0 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Fri, 11 Apr 2025 20:36:22 +0300 Subject: [PATCH 2/2] fixed customer id check for Customer --- .../server/service/entitiy/EntityServiceTest.java | 2 +- .../server/edqs/query/processor/AbstractQueryProcessor.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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 0f0aeb21be..264ac70443 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 @@ -1131,7 +1131,7 @@ public class EntityServiceTest extends AbstractControllerTest { 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 + // find by customer user PageData customerResults = findByQueryAndCheck(customerId, query, 1); customerName = customerResults.getData().get(0).getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue(); 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 d1f0d45984..30e963c252 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 @@ -64,9 +64,9 @@ 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.getEntityType() == EntityType.CUSTOMER && customerId.equals(ed.getId()))); + return customerId.equals(ed.getCustomerId()) + || (ed.getEntityType() == EntityType.DASHBOARD && ed.getFields().getAssignedCustomerIds().contains(customerId)) + || (ed.getEntityType() == EntityType.CUSTOMER && customerId.equals(ed.getId())); } protected boolean matches(EntityData ed) {