Добрый день.
Не нашел информации чем можно заменить SetupAttributeAccessHandler
из cuba. Подскажите, пожалуйста.
Добрый день.
Не нашел информации чем можно заменить 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));
}
}
@gorbunkov Спасибо за быстрый ответ.
Подскажите еще, возможно ли получить не только MetaPropertyPath
, но и сам объект, чтобы посмотреть на значение его атрибутов (например, статус) прежде чем устанавливать модификаторы?
Нет, данный механизм такое не предусматривает.