refactoring
This commit is contained in:
parent
4470ae9a05
commit
a613e1dbc6
@ -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()),
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user