Нет проблем с правилом ACL, которое вы написали для предоставления доступа ко всем контейнерам для пограничных компаний. Основная проблема заключается в том, что каждый участник Person имеет ссылку на свою Company , но для участника типа Person не определено правило доступа / чтения своей компании. подробности в ACL. Поэтому по умолчанию ACL запрещает доступ READ для Лица, чтобы ПРОЧИТАТЬ данные своей компании, и когда вы обращаетесь к компании лица в условии правила как
p.company.type
доступ просто ограничен. Для достижения той же функциональности вы должны сначала предоставить READ доступ к собственной компании лица, используя
rule readCompany {
description: "Allow Read Access to Person's Own Company"
participant(p): "org.acme.shipping.participants.Person"
operation: READ
resource(comp): "org.acme.shipping.participants.Company"
condition: (p.company.getIdentifier() == comp.getIdentifier())
action: ALLOW
}
Тогда вы сможете предоставить доступ ко всем контейнерам лицам , принадлежащим компании типа Граница , используя то же правило, что и
rule border {
description: "Allow Border access to containers"
participant(p): "org.acme.shipping.participants.Person"
operation: READ
resource: "org.acme.shipping.assets.**"
condition: (p.company.type == "BORDER")
action: ALLOW
}