fixed queue permissions
This commit is contained in:
parent
fa4a20d711
commit
e32e161745
@ -69,8 +69,8 @@ import org.thingsboard.server.common.data.id.EntityId;
|
|||||||
import org.thingsboard.server.common.data.id.EntityIdFactory;
|
import org.thingsboard.server.common.data.id.EntityIdFactory;
|
||||||
import org.thingsboard.server.common.data.id.EntityViewId;
|
import org.thingsboard.server.common.data.id.EntityViewId;
|
||||||
import org.thingsboard.server.common.data.id.OtaPackageId;
|
import org.thingsboard.server.common.data.id.OtaPackageId;
|
||||||
import org.thingsboard.server.common.data.id.RpcId;
|
|
||||||
import org.thingsboard.server.common.data.id.QueueId;
|
import org.thingsboard.server.common.data.id.QueueId;
|
||||||
|
import org.thingsboard.server.common.data.id.RpcId;
|
||||||
import org.thingsboard.server.common.data.id.RuleChainId;
|
import org.thingsboard.server.common.data.id.RuleChainId;
|
||||||
import org.thingsboard.server.common.data.id.RuleNodeId;
|
import org.thingsboard.server.common.data.id.RuleNodeId;
|
||||||
import org.thingsboard.server.common.data.id.TbResourceId;
|
import org.thingsboard.server.common.data.id.TbResourceId;
|
||||||
@ -85,9 +85,9 @@ import org.thingsboard.server.common.data.page.SortOrder;
|
|||||||
import org.thingsboard.server.common.data.page.TimePageLink;
|
import org.thingsboard.server.common.data.page.TimePageLink;
|
||||||
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
|
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
|
||||||
import org.thingsboard.server.common.data.plugin.ComponentType;
|
import org.thingsboard.server.common.data.plugin.ComponentType;
|
||||||
|
import org.thingsboard.server.common.data.queue.Queue;
|
||||||
import org.thingsboard.server.common.data.relation.EntityRelation;
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
||||||
import org.thingsboard.server.common.data.rpc.Rpc;
|
import org.thingsboard.server.common.data.rpc.Rpc;
|
||||||
import org.thingsboard.server.common.data.queue.Queue;
|
|
||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChainType;
|
import org.thingsboard.server.common.data.rule.RuleChainType;
|
||||||
import org.thingsboard.server.common.data.rule.RuleNode;
|
import org.thingsboard.server.common.data.rule.RuleNode;
|
||||||
@ -150,6 +150,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.DEFAULT_PAGE_SIZE;
|
import static org.thingsboard.server.controller.ControllerConstants.DEFAULT_PAGE_SIZE;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.INCORRECT_TENANT_ID;
|
import static org.thingsboard.server.controller.ControllerConstants.INCORRECT_TENANT_ID;
|
||||||
|
import static org.thingsboard.server.controller.UserController.YOU_DON_T_HAVE_PERMISSION_TO_PERFORM_THIS_OPERATION;
|
||||||
import static org.thingsboard.server.dao.service.Validator.validateId;
|
import static org.thingsboard.server.dao.service.Validator.validateId;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -825,6 +826,14 @@ public abstract class BaseController {
|
|||||||
Queue queue = queueService.findQueueById(getCurrentUser().getTenantId(), queueId);
|
Queue queue = queueService.findQueueById(getCurrentUser().getTenantId(), queueId);
|
||||||
checkNotNull(queue);
|
checkNotNull(queue);
|
||||||
accessControlService.checkPermission(getCurrentUser(), Resource.QUEUE, operation, queueId, queue);
|
accessControlService.checkPermission(getCurrentUser(), Resource.QUEUE, operation, queueId, queue);
|
||||||
|
TenantId tenantId = getTenantId();
|
||||||
|
if (queue.getTenantId().isNullUid() && !tenantId.isNullUid()) {
|
||||||
|
TenantProfile tenantProfile = tenantProfileCache.get(tenantId);
|
||||||
|
if (tenantProfile.isIsolatedTbRuleEngine()) {
|
||||||
|
throw new ThingsboardException(YOU_DON_T_HAVE_PERMISSION_TO_PERFORM_THIS_OPERATION,
|
||||||
|
ThingsboardErrorCode.PERMISSION_DENIED);
|
||||||
|
}
|
||||||
|
}
|
||||||
return queue;
|
return queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -45,7 +45,7 @@ public class TenantAdminPermissions extends AbstractPermissions {
|
|||||||
put(Resource.OTA_PACKAGE, tenantEntityPermissionChecker);
|
put(Resource.OTA_PACKAGE, tenantEntityPermissionChecker);
|
||||||
put(Resource.EDGE, tenantEntityPermissionChecker);
|
put(Resource.EDGE, tenantEntityPermissionChecker);
|
||||||
put(Resource.RPC, tenantEntityPermissionChecker);
|
put(Resource.RPC, tenantEntityPermissionChecker);
|
||||||
put(Resource.QUEUE, tenantEntityPermissionChecker);
|
put(Resource.QUEUE, queuePermissionChecker);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final PermissionChecker tenantEntityPermissionChecker = new PermissionChecker() {
|
public static final PermissionChecker tenantEntityPermissionChecker = new PermissionChecker() {
|
||||||
@ -121,4 +121,20 @@ public class TenantAdminPermissions extends AbstractPermissions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private static final PermissionChecker queuePermissionChecker = new PermissionChecker() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(SecurityUser user, Operation operation, EntityId entityId, HasTenantId entity) {
|
||||||
|
if (entity.getTenantId() == null || entity.getTenantId().isNullUid()) {
|
||||||
|
return operation == Operation.READ;
|
||||||
|
}
|
||||||
|
if (!user.getTenantId().equals(entity.getTenantId())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user