pii-network - разрешение acl - авторизовать / отозвать сеть доступа, но не для себя

Я использую онлайн Playground от Hyperledger Composer ( https://composer-playground.mybluemix.net/).

Я пытаюсь изменить файл acl из примера "pii-network".

Я хотел бы иметь авторизованный доступ, только если участник хочет авторизовать другого участника, а не себя... Как я могу это сделать? Я сделал следующее изменение в файле 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

}

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
}
Другие вопросы по тегам