0

Hyperledger Composer のオンライン Playground ( https://composer-playground.mybluemix.net/ ) を使用しています。

「pii-network」の例から acl ファイルを変更しようとしています。

参加者が自分ではなく別のメンバーを承認したい場合にのみ、アクセスを承認したいと思います... どうすればできますか? ACL ファイルに次の変更を加えましたが、期待どおりに動作しません (自分以外のユーザーではなく、ユーザーを承認/取り消します)。

rule AuthorizeAccessTransaction {
   description: "Allow all participants to submit AuthorizeAccess transactions"
   participant(p): "org.acme.model.Doctor"
   operation: CREATE
   resource(r): "org.acme.model.AuthorizeAccess"
   condition: (r.getIdentifier() != p.getIdentifier())
   action: ALLOW 
}
rule RevokeAccessTransaction {
   description: "Allow all participants to submit RevokeAccess transactions"
   participant(p): "org.acme.model.Doctor"
   operation: CREATE
   resource(r): "org.acme.model.RevokeAccess"
   condition: (r.getIdentifier() != p.getIdentifier())
   action: ALLOW
}
rule OwnRecordFullAccess {
   description: "Allow all participants full access to their own record"
   participant(p): "org.acme.model.Doctor"
   operation: ALL
   resource(r): "org.acme.model.Doctor"
   condition: (r.getIdentifier() === p.getIdentifier())
   action: ALLOW
}
rule ForeignRecordConditionalAccess {
   description: "Allow participants access to other people's records if granted"
   participant(p): "org.acme.model.Doctor"
   operation: ALL
   resource(r): "org.acme.model.Doctor"
   condition: (r.authorized && r.authorized.indexOf(p.getIdentifier()) > -1)
   action: ALLOW
}

rule SystemACL {
   description: "System ACL to permit all access"
   participant: "org.hyperledger.composer.system.Participant"
   operation: ALL
   resource: "org.hyperledger.composer.system.**"
   action: ALLOW

}

https://www.youtube.com/watch?v=VTX-9VyO6OU&feature=youtu.beの指示に従い、 表示したように .acl ファイルを変更しました

誰が問題が何であるか知っていますか?私は何を間違えたのですか?

ここにctoファイルも表示します:

namespace org.acme.model

concept Specialization {
o String hospital
o String hospital_ward //reparto ospedaliero
o String city 
o String county
o String zip
o String field //campo medico di specializzazione

}

participant Doctor identified by username {
o String username
o String firstName
o String lastName
o Specialization specialization 
o DateTime dob optional
o String[] authorized optional

}

abstract transaction DoctorTransaction {
o String username    

}

transaction AuthorizeAccess extends DoctorTransaction {

}

transaction RevokeAccess extends DoctorTransaction {

}

event DoctorEvent {
o DoctorTransaction doctorTransaction

}

4

1 に答える 1

0

許可されたユーザーのデータ型として関係を使用します。

participant Doctor identified by username {
o String username
o String firstName
o String lastName
o Specialization specialization 
o DateTime dob optional
--> Doctor[] authorized optional

次に、この関数を使用して permissions.acl の状態を確認します

rule ForeignRecordConditionalAccess {
   description: "Allow participants access to other people's records if granted"
   participant(p): "org.acme.model.Doctor"
   operation: ALL
   resource(r): "org.acme.model.Doctor"
   condition: (
    r.authorized.some(function (doc){
      return doc.$identifier === p.$identifier;
    })
   )
   action: ALLOW
}
于 2019-09-24T11:49:02.277 に答える