Versions Compared

Key

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

...

Use Case

New admin account created with a sandbox in which studies can be created/edited that are not visible to others

“Sandbox” can be converted to real study, with additional users in specific roles for that study

Study is extended by creating a new study

Study recruits from existing user pool into a new study

Add someone to a study’s administration team

Remove someone from a study’s administration team

Create similar authorization model for assessments

We should be able to expand it to other things than studies, because it seems likely we’ll encounter something else that needs finer-grained authorization.

Requirements

  • Permissions changes should register for users without them having to sign out and sign back in again (if cached they need to be separate from the session);

Organizations. “Teams” in Synapse impart an identical set of permissions to a project for a set of users. “Organizations” in Bridge are a scope for manipulating users, since our app is multi-tenanted. The roles related to organizations:

Role

Scope

Administrator

Organization

  • Can list, view, add and remove people from an organization.

  • Can change any of the user ↔︎ study permissions of they edit an account in the organization when the study is sponsored by the organizationCan they edit an account in the organization?

  • Can list studies sponsored by the organization

Member

Organization

  • Can list people in the organization

  • Can list studies sponsored by the organization

Studies. Individuals can be given specific roles vis-a-vis a study.

...

Code Block
languagejava
class Permission {
  String guid; // natural key makes create/add/update ambiguous
  String userId;
  String role;
  String objectType;
  String objectId; 
  
  // Object ID may need to be compound
  void setStudyObjectId(String appId, String studyId) {
    this.objectId = appId + ":" + studyId;
  }
}

...