2017-08-09 3 views
0

ACLがプレイグラウンドで動作するかどうかお知らせください。ACLはプレイグラウンドで動作しますか?

アセットの所有者がルールを変更できるだけのルールを作成したいとします。私は遊び場で試してみましたが、これは動作しません。

ファイルの作成者は、資産の所有者としてファイルを作成しました。次に、所有者としてsupplier1を添付したfile1という作成アセットを作成します。私が提出トランザクションを実行しているとき、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 
} 

私の判断基準では、データの検証はファイルの所有者だけが行ってください。どのようにそれを処理する

答えて

2

あなたの主な質問に答える - はい、ACLファイルは、オンラインプレイグラウンドで動作します、私は自分のアプリケーションの1つのために働いている。あなたがオンラインの遊び場に言及していない場合は、私の答えの残りの部分が役立つかどうかはわかりません。

あなたが「管理者」と言われている右上に移動し、新しいアイデンティティを作成して参加者に発行したことを前提としているオンラインプレイグラウンドを使用している場合は、あなたがでそうすることができない場合は、次の

  1. は遊び場の右上にある「管理」をクリックする

  2. 何が好き

  3. サプライユーザーID(「+新しいIDを発行します」 )と参加者(前に作成したもの)を入力してから[新規作成]をクリックしてください。

  4. オプション2を選択してください:「+自分のウォレットに追加する」これでIDを使用することができます参加者

私が尋ねる理由は、あなたのACLファイルが動作していても、あなたが '管理者'のIDとして残っていれば、あなたはまだあなたが望むすべてを表示/実行できるということです。

もう一つ、あなたのRule1に '=='の代わりに '==='を試してみることができますか?この2つのルールは意味があり、それを見るとすべてのユーザーが表示できますが、所有者以外のユーザーが付与されていないUPDATE権限を必要とするため、その資産を検証しようとするとエラーが発生します。

これが役に立ちます。

関連する問題