Аналог исключенного SetupAttributeAccessHandler

Добрый день.

Не нашел информации чем можно заменить SetupAttributeAccessHandler из cuba. Подскажите, пожалуйста.

Добрый день!

Вам необходимо определить и зарегистрировать access constraint.

Что-то типа:

import io.jmix.core.accesscontext.EntityAttributeContext;
import io.jmix.core.constraint.EntityOperationConstraint;
import io.jmix.core.metamodel.model.MetaPropertyPath;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class MyEntityAttributeConstraint implements EntityOperationConstraint<EntityAttributeContext>  {

    @Override
    public Class<EntityAttributeContext> getContextType() {
        return EntityAttributeContext.class;
    }

    @Override
    public void applyTo(EntityAttributeContext context) {
        MetaPropertyPath propertyPath = context.getPropertyPath();
        String propertyName = propertyPath.getMetaProperty().getName();
        if ("lastName".equals(propertyName)) {
            context.setModifyDenied();
        }
    }
}
import io.jmix.core.AccessConstraintsRegistry;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class MySecurityConstraintsRegistration {

    protected AccessConstraintsRegistry accessConstraintsRegistry;

    protected BeanFactory beanFactory;

    public MySecurityConstraintsRegistration(AccessConstraintsRegistry accessConstraintsRegistry, BeanFactory beanFactory) {
        this.accessConstraintsRegistry = accessConstraintsRegistry;
        this.beanFactory = beanFactory;
    }

    @PostConstruct
    public void registerConstraints() {
        accessConstraintsRegistry.register(beanFactory.getBean(MyEntityAttributeConstraint.class));
    }
}
1 симпатия

@gorbunkov Спасибо за быстрый ответ.
Подскажите еще, возможно ли получить не только MetaPropertyPath, но и сам объект, чтобы посмотреть на значение его атрибутов (например, статус) прежде чем устанавливать модификаторы?

Нет, данный механизм такое не предусматривает.