private boolean entityOpPermitted(MetaClass metaClass, EntityOp entityOp) { return security.isEntityOpPermitted(metaClass, entityOp); } }
protected boolean attrPermitted(MetaClass metaClass, String property, EntityAttrAccess entityAttrAccess) { return security.isEntityAttrPermitted(metaClass, property, entityAttrAccess); }
protected boolean isEditingPermitted() { if (propertyPath != null) { MetaClass metaClass = propertyPath.getMetaClass(); return owner.security.isEntityAttrUpdatePermitted(metaClass, propertyPath.toString()); } return true; }
public static boolean isSuitableProperty(MetaProperty metaProperty, MetaClass effectiveMetaClass) { if (metaProperty.getRange().isClass() && !Category.class.isAssignableFrom(metaProperty.getJavaType())) { Security security = AppBeans.get(Security.NAME); // check security if (security.isEntityAttrPermitted(effectiveMetaClass, metaProperty.getName(), EntityAttrAccess.VIEW) && security.isEntityOpPermitted(metaProperty.getRange().asClass(), EntityOp.READ)) { return true; } } return false; } }
protected void applyPermissions(Component fieldComponent) { if (fieldComponent instanceof DatasourceComponent) { DatasourceComponent dsComponent = (DatasourceComponent) fieldComponent; MetaPropertyPath propertyPath = dsComponent.getMetaPropertyPath(); Datasource datasource = dsComponent.getDatasource(); if (datasource != null && propertyPath != null) { MetaClass metaClass = datasource.getMetaClass(); Security security = getSecurity(); if (!security.isEntityAttrUpdatePermitted(metaClass, propertyPath.toString()) && dsComponent instanceof Component.Editable) { ((Component.Editable) dsComponent).setEditable(false); } if (!security.isEntityAttrReadPermitted(metaClass, propertyPath.toString())) { dsComponent.setVisible(false); } } } }
protected boolean checkRemovePermission() { ContainerDataUnit containerDataUnit = (ContainerDataUnit) target.getItems(); MetaClass metaClass = containerDataUnit.getEntityMetaClass(); if (metaClass == null) { return false; } boolean entityOpPermitted = security.isEntityOpPermitted(metaClass, EntityOp.DELETE); if (!entityOpPermitted) { return false; } if (containerDataUnit.getContainer() instanceof Nested) { Nested nestedContainer = (Nested) containerDataUnit.getContainer(); MetaClass masterMetaClass = nestedContainer.getMaster().getEntityMetaClass(); MetaProperty metaProperty = masterMetaClass.getPropertyNN(nestedContainer.getProperty()); boolean attrPermitted = security.isEntityAttrUpdatePermitted(masterMetaClass, metaProperty.getName()); if (!attrPermitted) { return false; } } return true; }
/** * Creates {@code CollectionPropertyContainer}. */ @SuppressWarnings("unchecked") public <E extends Entity> CollectionPropertyContainer<E> createCollectionContainer(Class<E> entityClass, InstanceContainer<? extends Entity> masterContainer, String property) { CollectionPropertyContainerImpl<E> container = new CollectionPropertyContainerImpl<>( metadata.getClassNN(entityClass), masterContainer, property); if (security.isEntityAttrReadPermitted(masterContainer.getEntityMetaClass(), property) && security.isEntityOpPermitted(entityClass, EntityOp.READ)) { masterContainer.addItemChangeListener(e -> { Entity item = masterContainer.getItemOrNull(); container.setItems(item != null ? item.getValue(property) : null); }); masterContainer.addItemPropertyChangeListener(e -> { if (e.getProperty().equals(property)) { container.setDisconnectedItems((Collection<E>) e.getValue()); } }); } return container; }
protected List<Object> getPropertyColumns(EntityTableItems<E> entityTableSource, List<Column<E>> columnsOrder) { MetaClass entityMetaClass = entityTableSource.getEntityMetaClass(); return columnsOrder.stream() .filter(c -> { MetaPropertyPath propertyPath = c.getBoundProperty(); return propertyPath != null && security.isEntityAttrReadPermitted(entityMetaClass, propertyPath.toPathString()); }) .map(Column::getBoundProperty) .collect(Collectors.toList()); }
protected boolean isMaxResultsLayoutVisible() { return useMaxResults && security.isSpecificPermitted("cuba.gui.filter.maxResults") && maxResultsAddedToLayout; }
protected void checkPermissions(LaunchMode launchMode, WindowInfo windowInfo) { // ROOT windows are always permitted if (launchMode != OpenMode.ROOT) { boolean permitted = security.isScreenPermitted(windowInfo.getId()); if (!permitted) { throw new AccessDeniedException(PermissionType.SCREEN, windowInfo.getId()); } } }
protected Collection<T> getCollection() { Security security = AppBeans.get(Security.NAME); MetaClass parentMetaClass = masterDs.getMetaClass(); MetaClass propertyMetaClass = metaProperty.getRange().asClass(); if (!security.isEntityOpPermitted(propertyMetaClass, EntityOp.READ) || !security.isEntityAttrPermitted(parentMetaClass, metaProperty.getName(), EntityAttrAccess.VIEW)) { return new ArrayList<>(); // Don't use Collections.emptyList() to avoid confusing UnsupportedOperationExceptions } else { final Instance master = masterDs.getItem(); //noinspection unchecked return master == null ? null : (Collection<T>) master.getValue(metaProperty.getName()); } }
protected void loadEditable(FieldGroup fieldGroup, FieldGroup.FieldConfig field) { if (fieldGroup.isEditable()) { MetaClass metaClass = rds.resolveCategorizedEntityClass(); MetaPropertyPath propertyPath = dynamicAttributesTools.getMetaPropertyPath(metaClass, field.getProperty()); checkNotNullArgument(propertyPath, "Could not resolve property path '%s' in '%s'", field.getId(), metaClass); boolean editableFromPermissions = security.isEntityAttrUpdatePermitted(metaClass, propertyPath.toString()); if (!editableFromPermissions) { field.setEditable(false); } boolean visibleFromPermissions = security.isEntityAttrReadPermitted(metaClass, propertyPath.toString()); if (!visibleFromPermissions) { field.setVisible(false); } } }
boolean updatePermitted = security.isEntityOpPermitted(reportTemplate.getMetaClass(), EntityOp.UPDATE) && security.isEntityAttrUpdatePermitted(reportTemplate.getMetaClass(), "content");
/** * Creates {@code InstancePropertyContainer}. */ @SuppressWarnings("unchecked") public <E extends Entity> InstancePropertyContainer<E> createInstanceContainer(Class<E> entityClass, InstanceContainer<? extends Entity> masterContainer, String property) { InstancePropertyContainerImpl<E> container = new InstancePropertyContainerImpl<>( metadata.getClassNN(entityClass), masterContainer, property); if (security.isEntityAttrReadPermitted(masterContainer.getEntityMetaClass(), property) && security.isEntityOpPermitted(entityClass, EntityOp.READ)) { masterContainer.addItemChangeListener(e -> { Entity item = masterContainer.getItemOrNull(); container.setItem(item != null ? item.getValue(property) : null); }); masterContainer.addItemPropertyChangeListener(e -> { if (e.getProperty().equals(property)) { container.setItem((E) e.getValue()); } }); } return container; }
protected List<Column<E>> getInitialVisibleColumns() { EntityDataGridItems<E> entityDataGridSource = getEntityDataGridItems(); if (entityDataGridSource == null || entityDataGridSource.getState() == BindingState.INACTIVE) { return Collections.emptyList(); } MetaClass metaClass = entityDataGridSource.getEntityMetaClass(); return columnsOrder.stream() .filter(column -> { MetaPropertyPath propertyPath = column.getPropertyPath(); return propertyPath == null || security.isEntityAttrReadPermitted(metaClass, propertyPath.toString()); }) .collect(Collectors.toList()); }
protected boolean userCanEditFilers() { return security.isSpecificPermitted(FILTER_EDIT_PERMISSION); }
@Override protected boolean isPermitted() { if (target == null || !(target.getItems() instanceof EntityDataUnit)) { return false; } MetaClass metaClass = ((EntityDataUnit) target.getItems()).getEntityMetaClass(); if (metaClass == null) { return true; } boolean permitted = security.isScreenPermitted(BulkEditor.PERMISSION); if (!permitted) { return false; } return super.isPermitted(); }
protected boolean entityOpPermitted(MetaClass metaClass, EntityOp entityOp) { return security.isEntityOpPermitted(metaClass, entityOp); } }
protected boolean checkRemovePermission() { CollectionDatasource ds = target.getDatasource(); if (ds instanceof PropertyDatasource) { PropertyDatasource propertyDatasource = (PropertyDatasource) ds; MetaClass parentMetaClass = propertyDatasource.getMaster().getMetaClass(); MetaProperty metaProperty = propertyDatasource.getProperty(); boolean modifyPermitted = security.isEntityAttrPermitted(parentMetaClass, metaProperty.getName(), EntityAttrAccess.MODIFY); if (!modifyPermitted) { return false; } if (metaProperty.getRange().getCardinality() != Range.Cardinality.MANY_TO_MANY) { boolean deletePermitted = security.isEntityOpPermitted(ds.getMetaClass(), EntityOp.DELETE); if (!deletePermitted) { return false; } } } else { boolean entityOpPermitted = security.isEntityOpPermitted(ds.getMetaClass(), EntityOp.DELETE); if (!entityOpPermitted) { return false; } } return true; }
if (column.isEditable() && (columnId instanceof MetaPropertyPath)) { MetaPropertyPath propertyPath = ((MetaPropertyPath) columnId); if (security.isEntityAttrUpdatePermitted(metaClass, propertyPath.toString())) { if (editableColumns.isEmpty()) { editableColumns = new ArrayList<>(); security.isEntityAttrReadPermitted(metaClass, columnId.toString())) { component.setColumnCollapsed(column.getId(), true);