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.EntityViewId;
 | 
			
		||||
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.RpcId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.RuleChainId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.RuleNodeId;
 | 
			
		||||
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.plugin.ComponentDescriptor;
 | 
			
		||||
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.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.RuleChainType;
 | 
			
		||||
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.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;
 | 
			
		||||
 | 
			
		||||
@Slf4j
 | 
			
		||||
@ -825,6 +826,14 @@ public abstract class BaseController {
 | 
			
		||||
        Queue queue = queueService.findQueueById(getCurrentUser().getTenantId(), queueId);
 | 
			
		||||
        checkNotNull(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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,7 @@ public class TenantAdminPermissions extends AbstractPermissions {
 | 
			
		||||
        put(Resource.OTA_PACKAGE, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.EDGE, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.RPC, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.QUEUE, tenantEntityPermissionChecker);
 | 
			
		||||
        put(Resource.QUEUE, queuePermissionChecker);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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