refactoring

This commit is contained in:
dashevchenko 2023-02-16 17:46:24 +02:00
parent 4470ae9a05
commit a613e1dbc6
4 changed files with 8 additions and 49 deletions

View File

@ -49,16 +49,11 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.common.data.query.EntityData;
import org.thingsboard.server.common.data.query.EntityDataPageLink;
import org.thingsboard.server.common.data.query.EntityDataQuery;
import org.thingsboard.server.common.data.query.EntityDataSortOrder;
import org.thingsboard.server.common.data.query.EntityKey;
import org.thingsboard.server.common.data.query.EntityKeyType;
import org.thingsboard.server.common.data.query.EntityTypeFilter;
import org.thingsboard.server.common.data.query.FilterPredicateValue;
import org.thingsboard.server.common.data.query.KeyFilter;
import org.thingsboard.server.common.data.query.StringFilterPredicate;
import org.thingsboard.server.common.data.security.Authority;
import org.thingsboard.server.common.data.security.UserCredentials;
import org.thingsboard.server.common.data.security.UserSettings;
@ -76,14 +71,11 @@ import org.thingsboard.server.service.security.system.SystemSecurityService;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.thingsboard.server.common.data.StringUtils.isNotEmpty;
import static org.thingsboard.server.common.data.query.EntityKeyType.ENTITY_FIELD;
import static org.thingsboard.server.common.data.query.FilterPredicateValue.fromString;
import static org.thingsboard.server.common.data.query.StringFilterPredicate.StringOperation.EQUAL;
import static org.thingsboard.server.controller.ControllerConstants.CUSTOMER_ID;
import static org.thingsboard.server.controller.ControllerConstants.CUSTOMER_ID_PARAM_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.DEFAULT_DASHBOARD;
@ -328,10 +320,10 @@ public class UserController extends BaseController {
}
@ApiOperation(value = "Find users by query (findUsersByQuery)",
notes = "Returns a page of user data owned by tenant or customer." +
PAGE_DATA_PARAMETERS + TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH)
notes = "Returns page of user data objects. Search is been executed by email, firstName and " +
"lastName fields. " + PAGE_DATA_PARAMETERS + TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH)
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
@RequestMapping(value = "/users/find", method = RequestMethod.GET)
@RequestMapping(value = "/users/info", method = RequestMethod.GET)
@ResponseBody
public PageData<UserData> findUsersByQuery(
@ApiParam(value = PAGE_SIZE_DESCRIPTION, required = true)
@ -348,33 +340,12 @@ public class UserController extends BaseController {
EntityTypeFilter entityFilter = new EntityTypeFilter();
entityFilter.setEntityType(EntityType.USER);
EntityDataPageLink pageLink = new EntityDataPageLink(pageSize, page, textSearch, createEntityDataSortOrder(sortProperty, sortOrder));
List<EntityKey> entityFields = Arrays.asList(new EntityKey(ENTITY_FIELD, "firstName"),
new EntityKey(ENTITY_FIELD, "lastName"),
new EntityKey(ENTITY_FIELD, "email"));
List<KeyFilter> keyFilters = new ArrayList<>();
KeyFilter tenantIdFilter = KeyFilter.builder()
.key(new EntityKey(ENTITY_FIELD, "tenantId"))
.predicate(StringFilterPredicate.builder()
.operation(EQUAL)
.value(fromString(securityUser.getTenantId().getId().toString())).build())
.build();
keyFilters.add(tenantIdFilter);
if (!Authority.TENANT_ADMIN.equals(securityUser.getAuthority())) {
KeyFilter customerIdFilter = KeyFilter.builder()
.key(new EntityKey(ENTITY_FIELD, "customerId"))
.predicate(StringFilterPredicate.builder()
.operation(EQUAL)
.value(fromString(securityUser.getCustomerId().getId().toString())).build())
.build();
keyFilters.add(customerIdFilter);
}
EntityDataQuery query = new EntityDataQuery(entityFilter, pageLink, entityFields, null, keyFilters);
EntityDataQuery query = new EntityDataQuery(entityFilter, pageLink, entityFields, null, null);
return entityQueryService.findEntityDataByQuery(securityUser, query).mapData(entityData ->
new UserData(UserId.fromString(entityData.getEntityId().getId().toString()),

View File

@ -915,7 +915,7 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest {
PageLink pageLink = new PageLink(10, 0, "Name");
PageData<UserData> pageData = null;
do {
pageData = doGetTypedWithPageLink("/api/users/find?",
pageData = doGetTypedWithPageLink("/api/users/info?",
new TypeReference<>() {
}, pageLink);
loadedCustomerUsers.addAll(pageData.getData());
@ -934,7 +934,7 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest {
// find user my full name
loadedCustomerUsers.clear();
pageLink = new PageLink(10, 0, "Name3");
pageData = doGetTypedWithPageLink("/api/users/find?",
pageData = doGetTypedWithPageLink("/api/users/info?",
new TypeReference<>() {
}, pageLink);
loadedCustomerUsers.addAll(pageData.getData());
@ -995,7 +995,7 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest {
PageLink pageLink = new PageLink(10, 0, "Name");
PageData<UserData> pageData = null;
do {
pageData = doGetTypedWithPageLink("/api/users/find?",
pageData = doGetTypedWithPageLink("/api/users/info?",
new TypeReference<>() {
}, pageLink);
loadedCustomerUsers.addAll(pageData.getData());
@ -1014,7 +1014,7 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest {
// find user my full name
loadedCustomerUsers.clear();
pageLink = new PageLink(10, 0, "SecondCustomerLastname3");
pageData = doGetTypedWithPageLink("/api/users/find?",
pageData = doGetTypedWithPageLink("/api/users/info?",
new TypeReference<>() {
}, pageLink);
loadedCustomerUsers.addAll(pageData.getData());

View File

@ -16,18 +16,12 @@
package org.thingsboard.server.common.data.query;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@ApiModel
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class KeyFilter implements Serializable {
private EntityKey key;

View File

@ -15,17 +15,11 @@
*/
package org.thingsboard.server.common.data.query;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StringFilterPredicate implements SimpleKeyFilterPredicate<String> {
private StringOperation operation;