Browse Source

Endpoint to find tenant profiles by ids

pull/7911/head
ViacheslavKlimov 4 years ago
parent
commit
1382c49881
  1. 15
      application/src/main/java/org/thingsboard/server/controller/TenantProfileController.java
  2. 5
      common/dao-api/src/main/java/org/thingsboard/server/dao/tenant/TenantProfileService.java
  3. 2
      dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationSettingsService.java
  4. 2
      dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationTargetService.java
  5. 8
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantProfileDao.java
  6. 3
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantProfileRepository.java
  7. 3
      dao/src/main/java/org/thingsboard/server/dao/tenant/TenantProfileDao.java
  8. 6
      dao/src/main/java/org/thingsboard/server/dao/tenant/TenantProfileServiceImpl.java

15
application/src/main/java/org/thingsboard/server/controller/TenantProfileController.java

@ -21,6 +21,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -32,14 +34,19 @@ import org.springframework.web.bind.annotation.RestController;
import org.thingsboard.server.common.data.EntityInfo;
import org.thingsboard.server.common.data.TenantProfile;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.TenantProfileId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.entitiy.tenant.profile.TbTenantProfileService;
import org.thingsboard.server.service.security.model.SecurityUser;
import org.thingsboard.server.service.security.permission.Operation;
import org.thingsboard.server.service.security.permission.Resource;
import java.util.List;
import java.util.UUID;
import static org.thingsboard.server.controller.ControllerConstants.MARKDOWN_CODE_BLOCK_END;
import static org.thingsboard.server.controller.ControllerConstants.MARKDOWN_CODE_BLOCK_START;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_DATA_PARAMETERS;
@ -268,4 +275,12 @@ public class TenantProfileController extends BaseController {
throw handleException(e);
}
}
@GetMapping(value = "/tenantProfiles", params = {"ids"})
@PreAuthorize("hasAuthority('SYS_ADMIN')")
public List<TenantProfile> getTenantProfilesByIds(@RequestParam("ids") UUID[] ids) {
return tenantProfileService.findTenantProfilesByIds(TenantId.SYS_TENANT_ID, ids);
}
}

5
common/dao-api/src/main/java/org/thingsboard/server/dao/tenant/TenantProfileService.java

@ -23,6 +23,9 @@ import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.EntityDaoService;
import java.util.List;
import java.util.UUID;
public interface TenantProfileService extends EntityDaoService {
TenantProfile findTenantProfileById(TenantId tenantId, TenantProfileId tenantProfileId);
@ -47,4 +50,6 @@ public interface TenantProfileService extends EntityDaoService {
void deleteTenantProfiles(TenantId tenantId);
List<TenantProfile> findTenantProfilesByIds(TenantId tenantId, UUID[] ids);
}

2
dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationSettingsService.java

@ -101,8 +101,6 @@ public class DefaultNotificationSettingsService implements NotificationSettingsS
});
}
// TODO: validate that wasn't already created (catch exception unique name)
// FIXME: user that does not have access to some entity, gets notifications about this entity - check permissions?
@Transactional(propagation = Propagation.NOT_SUPPORTED) // so that parent transaction is not aborted on method failure
@Override
public void createDefaultNotificationConfigs(TenantId tenantId) {

2
dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationTargetService.java

@ -147,7 +147,7 @@ public class DefaultNotificationTargetService extends AbstractEntityService impl
if (customerId != null && !customerId.isNullUid()) {
return userService.findCustomerUsers(tenantId, customerId, pageLink);
} else {
return userService.findTenantAdmins(tenantId, pageLink); // TODO: or should we send to all users within tenant?
return userService.findTenantAdmins(tenantId, pageLink);
}
}
}

8
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantProfileDao.java

@ -29,6 +29,8 @@ import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import org.thingsboard.server.dao.tenant.TenantProfileDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
@ -79,4 +81,10 @@ public class JpaTenantProfileDao extends JpaAbstractSearchTextDao<TenantProfileE
public EntityInfo findDefaultTenantProfileInfo(TenantId tenantId) {
return tenantProfileRepository.findDefaultTenantProfileInfo();
}
@Override
public List<TenantProfile> findTenantProfilesByIds(TenantId tenantId, UUID[] ids) {
return DaoUtil.convertDataList(tenantProfileRepository.findByIdIn(Arrays.asList(ids)));
}
}

3
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantProfileRepository.java

@ -23,6 +23,7 @@ import org.springframework.data.repository.query.Param;
import org.thingsboard.server.common.data.EntityInfo;
import org.thingsboard.server.dao.model.sql.TenantProfileEntity;
import java.util.List;
import java.util.UUID;
public interface TenantProfileRepository extends JpaRepository<TenantProfileEntity, UUID> {
@ -52,4 +53,6 @@ public interface TenantProfileRepository extends JpaRepository<TenantProfileEnti
"WHERE t.isDefault = true")
EntityInfo findDefaultTenantProfileInfo();
List<TenantProfileEntity> findByIdIn(List<UUID> ids);
}

3
dao/src/main/java/org/thingsboard/server/dao/tenant/TenantProfileDao.java

@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.Dao;
import java.util.List;
import java.util.UUID;
public interface TenantProfileDao extends Dao<TenantProfile> {
@ -38,4 +39,6 @@ public interface TenantProfileDao extends Dao<TenantProfile> {
EntityInfo findDefaultTenantProfileInfo(TenantId tenantId);
List<TenantProfile> findTenantProfilesByIds(TenantId tenantId, UUID[] ids);
}

6
dao/src/main/java/org/thingsboard/server/dao/tenant/TenantProfileServiceImpl.java

@ -40,6 +40,7 @@ import org.thingsboard.server.dao.service.Validator;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import static org.thingsboard.server.dao.service.Validator.validateId;
@ -202,6 +203,11 @@ public class TenantProfileServiceImpl extends AbstractCachedEntityService<Tenant
return false;
}
@Override
public List<TenantProfile> findTenantProfilesByIds(TenantId tenantId, UUID[] ids) {
return tenantProfileDao.findTenantProfilesByIds(tenantId, ids);
}
@Override
public void deleteTenantProfiles(TenantId tenantId) {
log.trace("Executing deleteTenantProfiles");

Loading…
Cancel
Save