Search in sources :

Example 1 with UiEntityContext

use of io.jmix.ui.accesscontext.UiEntityContext in project jmix by jmix-framework.

the class AppSettingsEntityScreen method readPermitted.

protected boolean readPermitted(MetaClass metaClass) {
    UiEntityContext entityContext = new UiEntityContext(metaClass);
    accessManager.applyRegisteredConstraints(entityContext);
    return entityContext.isViewPermitted();
}
Also used : UiEntityContext(io.jmix.ui.accesscontext.UiEntityContext)

Example 2 with UiEntityContext

use of io.jmix.ui.accesscontext.UiEntityContext in project jmix by jmix-framework.

the class EntityInspectorBrowser method readPermitted.

protected boolean readPermitted(MetaClass metaClass) {
    UiEntityContext entityContext = new UiEntityContext(metaClass);
    accessManager.applyRegisteredConstraints(entityContext);
    return entityContext.isViewPermitted();
}
Also used : UiEntityContext(io.jmix.ui.accesscontext.UiEntityContext)

Example 3 with UiEntityContext

use of io.jmix.ui.accesscontext.UiEntityContext in project jmix by jmix-framework.

the class InspectorFormBuilder method addField.

/**
 * Adds field to the specified form.
 * If the field should be custom, adds it to the specified customFields collection
 * which can be used later to create fieldGenerators
 *
 * @param metaProperty meta property of the item's property which field is creating
 * @param form         field group to which created field will be added
 */
protected void addField(InstanceContainer container, Form form, MetaProperty metaProperty, boolean isReadonly) {
    MetaClass metaClass = container.getEntityMetaClass();
    Range range = metaProperty.getRange();
    boolean isRequired = isRequired(metaProperty);
    UiEntityAttributeContext attributeContext = new UiEntityAttributeContext(metaClass, metaProperty.getName());
    accessManager.applyRegisteredConstraints(attributeContext);
    if (!attributeContext.canView())
        return;
    if (range.isClass()) {
        UiEntityContext entityContext = new UiEntityContext(range.asClass());
        accessManager.applyRegisteredConstraints(entityContext);
        if (!entityContext.isViewPermitted()) {
            return;
        }
    }
    ValueSource valueSource = new ContainerValueSource<>(container, metaProperty.getName());
    ComponentGenerationContext componentContext = new ComponentGenerationContext(metaClass, metaProperty.getName());
    componentContext.setValueSource(valueSource);
    Field field = (Field) uiComponentsGenerator.generate(componentContext);
    if (requireTextArea(metaProperty, getItem(), MAX_TEXTFIELD_STRING_LENGTH)) {
        field = uiComponents.create(TextArea.NAME);
    }
    if (isBoolean(metaProperty)) {
        field = createBooleanField();
    }
    if (range.isClass()) {
        EntityPicker pickerField = uiComponents.create(EntityPicker.class);
        EntityLookupAction lookupAction = actions.create(EntityLookupAction.class);
        lookupAction.setScreenClass(EntityInspectorBrowser.class);
        lookupAction.setScreenOptionsSupplier(() -> new MapScreenOptions(ParamsMap.of("entity", metaProperty.getRange().asClass().getName())));
        lookupAction.setOpenMode(OpenMode.THIS_TAB);
        pickerField.addAction(lookupAction);
        pickerField.addAction(actions.create(EntityClearAction.class));
        field = pickerField;
    }
    field.setValueSource(valueSource);
    field.setCaption(getPropertyCaption(metaClass, metaProperty));
    field.setRequired(isRequired);
    isReadonly = isReadonly || (disabledProperties != null && disabledProperties.contains(metaProperty.getName()));
    if (range.isClass() && !metadataTools.isEmbedded(metaProperty)) {
        field.setEditable(metadataTools.isOwningSide(metaProperty) && !isReadonly);
    } else {
        field.setEditable(!isReadonly);
    }
    field.setWidth(fieldWidth);
    if (isRequired) {
        field.setRequiredMessage(messageTools.getDefaultRequiredMessage(metaClass, metaProperty.getName()));
    }
    form.add(field);
}
Also used : UiEntityContext(io.jmix.ui.accesscontext.UiEntityContext) UiEntityAttributeContext(io.jmix.ui.accesscontext.UiEntityAttributeContext) Range(io.jmix.core.metamodel.model.Range) ContainerValueSource(io.jmix.ui.component.data.value.ContainerValueSource) EntityClearAction(io.jmix.ui.action.entitypicker.EntityClearAction) MetaClass(io.jmix.core.metamodel.model.MetaClass) ContainerValueSource(io.jmix.ui.component.data.value.ContainerValueSource) ValueSource(io.jmix.ui.component.data.ValueSource) EntityLookupAction(io.jmix.ui.action.entitypicker.EntityLookupAction) MapScreenOptions(io.jmix.ui.screen.MapScreenOptions)

Example 4 with UiEntityContext

use of io.jmix.ui.accesscontext.UiEntityContext in project jmix by jmix-framework.

the class BaseEmbeddingStrategy method checkPermissions.

protected boolean checkPermissions(AttributeDefinition attributeDefinition, MetaClass entityMetaClass) {
    UiEntityAttributeContext uiEntityAttributeContext = new UiEntityAttributeContext(metadataTools.resolveMetaPropertyPath(entityMetaClass, DynAttrUtils.getPropertyFromAttributeCode(attributeDefinition.getCode())));
    accessManager.applyRegisteredConstraints(uiEntityAttributeContext);
    if (uiEntityAttributeContext.canView()) {
        if (attributeDefinition.getDataType() == AttributeType.ENTITY) {
            MetaClass referenceEntityClass = metadata.getClass(attributeDefinition.getJavaType());
            UiEntityContext uiEntityContext = new UiEntityContext(referenceEntityClass);
            accessManager.applyRegisteredConstraints(uiEntityContext);
            return uiEntityContext.isViewPermitted();
        }
        return true;
    }
    return false;
}
Also used : UiEntityContext(io.jmix.ui.accesscontext.UiEntityContext) MetaClass(io.jmix.core.metamodel.model.MetaClass) UiEntityAttributeContext(io.jmix.ui.accesscontext.UiEntityAttributeContext)

Example 5 with UiEntityContext

use of io.jmix.ui.accesscontext.UiEntityContext in project jmix by jmix-framework.

the class CreateAction method isPermitted.

@Override
protected boolean isPermitted() {
    if (target == null || !(target.getItems() instanceof EntityDataUnit)) {
        return false;
    }
    MetaClass metaClass = ((EntityDataUnit) target.getItems()).getEntityMetaClass();
    if (metaClass == null) {
        return true;
    }
    UiEntityContext entityContext = new UiEntityContext(metaClass);
    accessManager.applyRegisteredConstraints(entityContext);
    if (!entityContext.isCreatePermitted()) {
        return false;
    }
    return super.isPermitted();
}
Also used : UiEntityContext(io.jmix.ui.accesscontext.UiEntityContext) MetaClass(io.jmix.core.metamodel.model.MetaClass) EntityDataUnit(io.jmix.ui.component.data.meta.EntityDataUnit)

Aggregations

UiEntityContext (io.jmix.ui.accesscontext.UiEntityContext)24 MetaClass (io.jmix.core.metamodel.model.MetaClass)20 UiEntityAttributeContext (io.jmix.ui.accesscontext.UiEntityAttributeContext)9 EntityDataUnit (io.jmix.ui.component.data.meta.EntityDataUnit)9 InMemoryCrudEntityContext (io.jmix.core.accesscontext.InMemoryCrudEntityContext)3 MetaProperty (io.jmix.core.metamodel.model.MetaProperty)3 Range (io.jmix.core.metamodel.model.Range)2 ValueSource (io.jmix.ui.component.data.ValueSource)2 ContainerValueSource (io.jmix.ui.component.data.value.ContainerValueSource)2 AccessManager (io.jmix.core.AccessManager)1 EntityStates (io.jmix.core.EntityStates)1 MessageTools (io.jmix.core.MessageTools)1 Metadata (io.jmix.core.Metadata)1 ParamsMap (io.jmix.core.common.util.ParamsMap)1 EntityValues (io.jmix.core.entity.EntityValues)1 KeyValueMetaClass (io.jmix.core.impl.keyvalue.KeyValueMetaClass)1 ASSOCIATION (io.jmix.core.metamodel.model.MetaProperty.Type.ASSOCIATION)1 MetaPropertyPath (io.jmix.core.metamodel.model.MetaPropertyPath)1 AccessDeniedException (io.jmix.core.security.AccessDeniedException)1 PersistenceHints (io.jmix.data.PersistenceHints)1