2017-06-16 1 views
0

Was ich tun möchte ist, dass READ ACCESS zu einem bestimmten Teilnehmer die Felder anderer Teilnehmer geben, aber Bedingung auf dritte Ressource setzen.Wie können wir READ Zugriff auf eine bestimmte Ressource geben, während die Bedingung auf eine andere Ressource in der ACL-Datei gesetzt wird?

ZB:

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 
    } 

So, hier möchte ich den Zugriff von Profil von PARTICIPANT2 geben, basierend auf einem gewissen Asset-Datensatz PARTICIPANT1.

Ist es möglich, diese Sache in Komponisten und wenn nicht, was sind die anderen Optionen?

Antwort

0

Ich glaube nicht, dass dies derzeit mit Hyperledger Composer möglich ist. Sie können in einer ACL-Regel ein nicht verwandtes Asset nicht nachschlagen.

Sie können jedoch die Kennung eines verknüpften Assets nachschlagen. Um dies möglich zu machen, müßten Sie eine Beziehung von dem Teilnehmer zu dem Datensatz hinzufügen wie folgt:

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 
} 

Sie können dann auf das zugehörige record Feld aus einer ACL-Regel:

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 
} 

Wir haben ein GitHub Problem zur Zeit die Beziehungen zu nahe stehenden Vermögenswerte zu lösen, die Sie alle Felder eines entsprechenden Vermögenswert zu sehen erlaubt:

https://github.com/hyperledger/composer/issues/1007

Verwandte Themen