Browse Source

User info processing refactoring

pull/11644/head
ViacheslavKlimov 2 years ago
parent
commit
52ada5cac2
  1. 9
      application/src/main/java/org/thingsboard/server/controller/AuthController.java
  2. 34
      application/src/main/java/org/thingsboard/server/controller/BaseController.java
  3. 7
      application/src/main/java/org/thingsboard/server/controller/CustomerController.java
  4. 5
      application/src/main/java/org/thingsboard/server/controller/TenantController.java
  5. 5
      application/src/main/java/org/thingsboard/server/controller/UserController.java
  6. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java
  7. 5
      dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java

9
application/src/main/java/org/thingsboard/server/controller/AuthController.java

@ -15,7 +15,6 @@
*/ */
package org.thingsboard.server.controller; package org.thingsboard.server.controller;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -59,9 +58,6 @@ import org.thingsboard.server.service.security.model.UserPrincipal;
import org.thingsboard.server.service.security.model.token.JwtTokenFactory; import org.thingsboard.server.service.security.model.token.JwtTokenFactory;
import org.thingsboard.server.service.security.system.SystemSecurityService; import org.thingsboard.server.service.security.system.SystemSecurityService;
import static org.thingsboard.server.controller.ControllerConstants.DEFAULT_DASHBOARD;
import static org.thingsboard.server.controller.ControllerConstants.HOME_DASHBOARD;
@RestController @RestController
@TbCoreComponent @TbCoreComponent
@RequestMapping("/api") @RequestMapping("/api")
@ -87,10 +83,7 @@ public class AuthController extends BaseController {
public User getUser() throws ThingsboardException { public User getUser() throws ThingsboardException {
SecurityUser securityUser = getCurrentUser(); SecurityUser securityUser = getCurrentUser();
User user = userService.findUserById(securityUser.getTenantId(), securityUser.getId()); User user = userService.findUserById(securityUser.getTenantId(), securityUser.getId());
if (user.getAdditionalInfo().isObject()) { checkDashboardInfo(user.getAdditionalInfo());
ObjectNode additionalInfo = (ObjectNode) user.getAdditionalInfo();
processDashboardIdFromAdditionalInfo(additionalInfo);
}
return user; return user;
} }

34
application/src/main/java/org/thingsboard/server/controller/BaseController.java

@ -15,6 +15,7 @@
*/ */
package org.thingsboard.server.controller; package org.thingsboard.server.controller;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import jakarta.mail.MessagingException; import jakarta.mail.MessagingException;
@ -875,10 +876,10 @@ public abstract class BaseController {
} }
} }
protected void processUserAdditionalInfo(User user) throws ThingsboardException { protected void checkUserInfo(User user) throws ThingsboardException {
if (user.getAdditionalInfo().isObject()) { if (user.getAdditionalInfo() instanceof ObjectNode additionalInfo) {
ObjectNode additionalInfo = (ObjectNode) user.getAdditionalInfo(); checkDashboardInfo(additionalInfo);
processDashboardIdFromAdditionalInfo(additionalInfo);
UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getTenantId(), user.getId()); UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getTenantId(), user.getId());
if (userCredentials.isEnabled() && !additionalInfo.has("userCredentialsEnabled")) { if (userCredentials.isEnabled() && !additionalInfo.has("userCredentialsEnabled")) {
additionalInfo.put("userCredentialsEnabled", true); additionalInfo.put("userCredentialsEnabled", true);
@ -886,16 +887,25 @@ public abstract class BaseController {
} }
} }
protected void processDashboardIdFromAdditionalInfo(ObjectNode additionalInfo) throws ThingsboardException { protected void checkDashboardInfo(JsonNode additionalInfo) throws ThingsboardException {
processDashboardIdFromAdditionalInfo(additionalInfo, DEFAULT_DASHBOARD); checkDashboardInfo(additionalInfo, DEFAULT_DASHBOARD);
processDashboardIdFromAdditionalInfo(additionalInfo, HOME_DASHBOARD); checkDashboardInfo(additionalInfo, HOME_DASHBOARD);
} }
protected void processDashboardIdFromAdditionalInfo(ObjectNode additionalInfo, String requiredFields) throws ThingsboardException { protected void checkDashboardInfo(JsonNode node, String dashboardField) throws ThingsboardException {
String dashboardId = additionalInfo.has(requiredFields) ? additionalInfo.get(requiredFields).asText() : null; if (node instanceof ObjectNode additionalInfo) {
if (dashboardId != null && !dashboardId.equals("null")) { DashboardId dashboardId = Optional.ofNullable(additionalInfo.get(dashboardField))
if (dashboardService.findDashboardById(getTenantId(), new DashboardId(UUID.fromString(dashboardId))) == null) { .filter(JsonNode::isTextual).map(JsonNode::asText)
additionalInfo.remove(requiredFields); .map(id -> {
try {
return new DashboardId(UUID.fromString(id));
} catch (IllegalArgumentException e) {
return null;
}
}).orElse(null);
if (dashboardId != null && !dashboardService.existsById(getTenantId(), dashboardId)) {
additionalInfo.remove(dashboardField);
} }
} }
} }

7
application/src/main/java/org/thingsboard/server/controller/CustomerController.java

@ -80,9 +80,7 @@ public class CustomerController extends BaseController {
checkParameter(CUSTOMER_ID, strCustomerId); checkParameter(CUSTOMER_ID, strCustomerId);
CustomerId customerId = new CustomerId(toUUID(strCustomerId)); CustomerId customerId = new CustomerId(toUUID(strCustomerId));
Customer customer = checkCustomerId(customerId, Operation.READ); Customer customer = checkCustomerId(customerId, Operation.READ);
if (!customer.getAdditionalInfo().isNull()) { checkDashboardInfo(customer.getAdditionalInfo(), HOME_DASHBOARD);
processDashboardIdFromAdditionalInfo((ObjectNode) customer.getAdditionalInfo(), HOME_DASHBOARD);
}
return customer; return customer;
} }
@ -181,7 +179,8 @@ public class CustomerController extends BaseController {
public Customer getTenantCustomer( public Customer getTenantCustomer(
@Parameter(description = "A string value representing the Customer title.") @Parameter(description = "A string value representing the Customer title.")
@RequestParam String customerTitle) throws ThingsboardException { @RequestParam String customerTitle) throws ThingsboardException {
TenantId tenantId = getCurrentUser().getTenantId(); TenantId tenantId = getCurrentUser().getTenantId();
return checkNotNull(customerService.findCustomerByTenantIdAndTitle(tenantId, customerTitle), "Customer with title [" + customerTitle + "] is not found"); return checkNotNull(customerService.findCustomerByTenantIdAndTitle(tenantId, customerTitle), "Customer with title [" + customerTitle + "] is not found");
} }
} }

5
application/src/main/java/org/thingsboard/server/controller/TenantController.java

@ -15,7 +15,6 @@
*/ */
package org.thingsboard.server.controller; package org.thingsboard.server.controller;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -79,9 +78,7 @@ public class TenantController extends BaseController {
checkParameter(TENANT_ID, strTenantId); checkParameter(TENANT_ID, strTenantId);
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId)); TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
Tenant tenant = checkTenantId(tenantId, Operation.READ); Tenant tenant = checkTenantId(tenantId, Operation.READ);
if (!tenant.getAdditionalInfo().isNull()) { checkDashboardInfo(tenant.getAdditionalInfo(), HOME_DASHBOARD);
processDashboardIdFromAdditionalInfo((ObjectNode) tenant.getAdditionalInfo(), HOME_DASHBOARD);
}
return tenant; return tenant;
} }

5
application/src/main/java/org/thingsboard/server/controller/UserController.java

@ -16,7 +16,6 @@
package org.thingsboard.server.controller; package org.thingsboard.server.controller;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@ -92,8 +91,6 @@ import static org.thingsboard.server.controller.ControllerConstants.ALARM_ID_PAR
import static org.thingsboard.server.controller.ControllerConstants.CUSTOMER_ID; 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.CUSTOMER_ID_PARAM_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.DASHBOARD_ID_PARAM_DESCRIPTION; import static org.thingsboard.server.controller.ControllerConstants.DASHBOARD_ID_PARAM_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.DEFAULT_DASHBOARD;
import static org.thingsboard.server.controller.ControllerConstants.HOME_DASHBOARD;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_DATA_PARAMETERS; import static org.thingsboard.server.controller.ControllerConstants.PAGE_DATA_PARAMETERS;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION; import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_SIZE_DESCRIPTION; import static org.thingsboard.server.controller.ControllerConstants.PAGE_SIZE_DESCRIPTION;
@ -146,7 +143,7 @@ public class UserController extends BaseController {
checkParameter(USER_ID, strUserId); checkParameter(USER_ID, strUserId);
UserId userId = new UserId(toUUID(strUserId)); UserId userId = new UserId(toUUID(strUserId));
User user = checkUserId(userId, Operation.READ); User user = checkUserId(userId, Operation.READ);
processUserAdditionalInfo(user); checkUserInfo(user);
return user; return user;
} }

2
common/dao-api/src/main/java/org/thingsboard/server/dao/dashboard/DashboardService.java

@ -76,4 +76,6 @@ public interface DashboardService extends EntityDaoService {
List<Dashboard> findTenantDashboardsByTitle(TenantId tenantId, String title); List<Dashboard> findTenantDashboardsByTitle(TenantId tenantId, String title);
boolean existsById(TenantId tenantId, DashboardId dashboardId);
} }

5
dao/src/main/java/org/thingsboard/server/dao/dashboard/DashboardServiceImpl.java

@ -385,6 +385,11 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb
return dashboardDao.findByTenantIdAndTitle(tenantId.getId(), title); return dashboardDao.findByTenantIdAndTitle(tenantId.getId(), title);
} }
@Override
public boolean existsById(TenantId tenantId, DashboardId dashboardId) {
return dashboardDao.existsById(tenantId, dashboardId.getId());
}
private final PaginatedRemover<TenantId, DashboardId> tenantDashboardsRemover = new PaginatedRemover<>() { private final PaginatedRemover<TenantId, DashboardId> tenantDashboardsRemover = new PaginatedRemover<>() {
@Override @Override

Loading…
Cancel
Save