Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. An ACT member navigates to a subject A (entity or team) that they want to apply new AccessRequirement to.
  2. S/he creates an AccessRequirement B for the subject, setting up the terms, and specifying all requirements.
  3. Later new data C is added to Synapse.
  4. An ACT member determines that the new data should have the same AccessRequirement with A. S/he navigates to A and list A's AccessRequirement to find the one they are looking for.
  5. S/he changes the existing AccessRequirement, extends it to also apply to C.

For team, currently, we haven't exposed the ability to create an AccessRequirement at the team's place. User still navigate to an entity's AccessRequirement to find the "Create new AccessRequirement" button. Ultimately, since it doesn't make sense to have AccessRequirement that applies to both Teams and Entities, we should separating the paths of creating AccessRequirement for Teams and Entities.

Problems

  1. Currently, each AccessRequirement can be applied to multiple subjects. Every time a subject is added or removed from the AccessRequirement, the AccessRequirement is updated. 
  2. Since applying an AccessRequirement to a subject is a relationship between AccessRequirement and subject, adding or removing subjects from AccessRequirement should only change the relationship between the subjects and the AccessRequirement, and do not update the AccessRequirement.
  3. Entity's creator needs to contact ACT to apply an existing AccessRequirement to their entity.
  4. Also, changing this relationship may make the subject more or less accessible to users. The change should trigger a change message on the subject itself so that we can correctly authorize users' actions on the subject.

Proposed Solution

This section is open for discussion.

...

  • It is not clear that the association between a subject and an AccessRequirement is not a part of the AccessRequirement.

Option 2 - Allow AccessRequirement to be created

...

without specifying Subjects

  • Remove the list of RestrictableObjectDescriptor from AccessRequirement DTO.
  • Create & Update AccessRequirement will not associate the AccessRequirement to any subjects.
  • Add new set of APIs to associate a subject to an AccessRequirement and to remove the association.
  • Add new APIs to list AccessRequirement one creates and have access to. 

...

  • AccessRequirement itself can have similar terms. AccessRequirements do not have name. Without the context of which subject it applies too, it is hard for user to identify which AccessRequirement they wants.

New Services

These are new APIs for option 2.

...


ActionIntended UsersMethodURIRequest ParamsRequestBodyResponseBody
1Apply an AccessRequirement to a subjectACTPUT/accessRequirement/{id}/subjectsubjectId, subjectType

2Remove an AccessRequirement from a subjectACTDELETE/accessRequirement/{id}/subjectsubjectId, subjectType

3Listing a page of subjects that an AccessRequirement directly applies toAll usersGET/accessRequirement/{id}/subjectsnextPageToken
RestrictableObjectDescriptorResponse
4Listing a page of AccessRequirements that applies to a subject All usersPOST/accessRequirement/batch
BatchAccessRequirementRequestBatchAccessRequirementResponse



RestrictableObjectDescriptorResponse
List<RestrictableObjectDescriptor> subjects
String nextPageToken


BatchAccessRequirementRequest
RestrictableObjectDescriptor subject
String nextPageToken


BatchAccessRequirementResponse
List<AccessRequirement> results
String nextPageToken


Related JIRA tickets:

  • Jira Legacy
    serverJIRA (sagebionetworks.jira.com)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverIdba6fb084-9827-3160-8067-8ac7470f78b2
    keyPLFM-4476
  • Jira Legacy
    serverJIRA (sagebionetworks.jira.com)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverIdba6fb084-9827-3160-8067-8ac7470f78b2
    keyPLFM-4512
  • Jira Legacy
    serverJIRA (sagebionetworks.jira.com)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverIdba6fb084-9827-3160-8067-8ac7470f78b2
    keySWC-3709
  • Jira Legacy
    serverJIRA (sagebionetworks.jira.com)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverIdba6fb084-9827-3160-8067-8ac7470f78b2
    keyPLFM-4518