Ограничить доступ PUT к свойству в активе

Вместо предоставления полного доступа к обновлению участнику я хотел бы предоставить ему доступ к обновлению для определенного свойства в активе.

Из того, что я прочитал в документации, можно применить правило к свойству.

Правило:

rule PatientAddMentor {
    description: "A patient is allowed to add mentors"
    participant(p): "nl.epd.blockchain.Patient"
    operation: UPDATE
    resource(m): "nl.epd.blockchain.MedicalFile.mentors"
    condition: (m.owner.getIdentifier() == p.getIdentifier())
    action: ALLOW
}

Часть, на которой я застрял, - это то, как нацелить актив в условии. Я предполагаю, что (m) соответствует наставникам в условии, потому что в сообщении об ошибке говорится, что у участника нет прав на ОБНОВЛЕНИЕ. (Я не уверен, что это вообще возможно.)

Модель:

namespace nl.epd.blockchain

asset MedicalFile identified by bsn {
  o String                    bsn
  --> Patient                 owner
  --> Patient[]               mentors optional
  --> Organisation[]          organisations optional
  o Visit[]                   visits optional
  o String[]                  allergies optional
  o Treatment[]               treatments optional
  o Medicine[]                medicine optional
}

participant Patient identified by bsn {
  o String bsn
  o String firstName
  o String namePrefix optional
  o String lastName
  o String email
  o String telephoneNumber
  o String birthday
  o String gender
  o String city
  o String zipCode
  o String street
  o String houseNumber
  o String houseNumberExtra optional
}

person Jamie    schedule 09.06.2017    source источник


Ответы (1)


Механизм ACL еще не обеспечивает контроль доступа на уровне свойств (был реализован только контроль доступа на уровне пространства имен и класса).

Вам придется использовать программный контроль доступа с помощью getCurrentParticipant() API среды выполнения, пока не будет реализован декларативный контроль доступа к свойствам.

person Dan Selman    schedule 12.06.2017