如果ACL在游乐场工作,请告诉我们吗?
我想创建一个规则,资产所有者只能修改规则。我在操场上试过,但是没有用
我创建了文件作为资产和供应商作为资产的所有者。然后,创建的名为file1的资产将supplier1作为所有者附加。当我执行提交交易时,Supplier2也可以修改交易。我的规则是无效的?我需要更多的鲁莽吗?
/**
* New model file
*/
namespace org.acme.model
enum TransactionState {
o CREATED
o VERIFIED
}
asset File identified by fileId {
o String fileId
o String data
--> Supplier owner
o TransactionState state
}
participant Supplier identified by supplierId {
o String supplierId
o String emailId
o String details
}
transaction DataValidate {
--> File asset
o TransactionState state
--> Supplier supplier
}
/**
* Data Validation by Supplier
* @param {org.acme.model.DataValidate} dataValidate - the DataValidate transaction
* @transaction
*/
function DataValidate(dataValidate) {
dataValidate.asset.state = dataValidate.state;
return getAssetRegistry('org.acme.model.File')
.then(function (assetRegistry) {
return assetRegistry.update(dataValidate.asset);
});
}
rule Rule1 {
description: "can perform ALL operations , IF the participant is owner of the asset"
participant(m): "org.acme.model.Supplier"
operation: ALL
resource(v): "org.acme.model.File"
condition: (v.owner.getIdentifier() == m.getIdentifier())
action: ALLOW
}
rule Member {
description: "Allow the member read access"
participant: "org.acme.model.Supplier"
operation: READ
resource: "org.acme.model.*"
action: ALLOW
}
我的标准是,数据验证只能由文件的所有者完成,而不是其他人。如何处理
答案 0 :(得分:2)
回答你的主要问题 - 是的,ACL文件在在线游乐场中有效,我让它适用于我的一个应用程序。如果你不是指在线游乐场,我不确定我的其余部分是否有帮助。
如果您使用的是在线游乐场,则认为您已经走到了右上角所说的“管理员”#39;并创造了新的身份并向参与者发放了这些身份?如果没有,你可以通过以下方式实现:
点击' admin'在操场的右上角
' +发出新ID'
提供用户ID(无论您喜欢什么)和参与者(将是您之前创建的用户ID),然后按'新建'
我问的原因是,即使您的ACL文件有效,如果您仍然是' admin'你仍然可以查看/做你想做的一切。
另一件事,你可以尝试' ==='而不是' =='在你的Rule1?这两个规则是有道理的,从查看它,所有用户都可以查看,但如果除了所有者之外的任何人都试图验证该资产,则会引发错误,因为它需要未授予的UPDATE权限。
希望这有帮助。