我想要做的是给特定参与者提供READ ACCESS其他参与者的字段,但是将条件放在第三资源上。
例如:
rule SampleRule{
description: "Allow the Participant1 to view Participant2 profile"
participant(m): "org.sample.blockchain.Participant1"
operation: READ
resource(v): "org.sample.blockchain.Participant2"
condition:(
v.getIdentifier() == Record.Participant1.getIdentifier()
&& m.getIdentifier() == Record.Participant2.getIdentifier()
)
action: ALLOW
}
asset Record identified by Id {
o String Id
--> Participant1 Participant1
--> Participant2 Participant2
}
participant Participant1 identified by EmailId{
o String EmailId
o String Name
o Integer Age
}
participant Participant2 identified by EmailId{
o String EmailId
o String Name
o Integer Age
}
所以在这里我想基于某些资产记录访问参与者1的个人资料。
是否可以在作曲家中使用这个东西,如果没有,那么其他选项是什么?
答案 0 :(得分:0)
我认为Hyperledger Composer目前无法实现这一目标。您无法在ACL规则中查找不相关的资产。
但是,您可以查找相关资产的标识符。为了实现这一点,您需要添加从参与者到记录的关系,如下所示:
asset Record identified by Id {
o String Id
--> Participant1 Participant1
--> Participant2 Participant2
}
participant Participant1 identified by EmailId{
o String EmailId
o String Name
o Integer Age
--> Record record // note the new record field
}
然后,您可以从ACL规则访问相关的record
字段:
rule SampleRule {
description: "Allow the Participant1 to view Participant2 profile"
participant(m): "org.sample.blockchain.Participant1"
operation: READ
resource(v): "org.sample.blockchain.Participant2"
condition: (
m.record.getIdentifier() === v.record.getIdentifier()
)
action: ALLOW
}
我们目前有一个GitHub问题来解决与相关资产的关系,这将允许您查找相关资产的所有字段: