@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } Patient patient = this.patientRepository.get(entity.toString()); if (patient == null) { return null; } return false; } }
@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } Family family = this.familyRepository.get(entity.toString()); if (family == null) { return null; } return false; } }
@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } // This converts the document to a primary entity. PrimaryEntity primaryEntity = this.resolver.resolveEntity(entity.toString()); if (primaryEntity == null) { return null; } Owner owner = this.manager.getEntityAccess(primaryEntity).getOwner(); if (owner.getUser() == null) { return true; } return null; } }
/** * @param description a right description to compare this right to. * @return true if the right is equivalent to the provided description. */ boolean like(RightDescription description) { return new EqualsBuilder() .append(this.isReadOnly(), description.isReadOnly()) .append(this.getDefaultState(), description.getDefaultState()) .append(this.getTieResolutionPolicy(), description.getTieResolutionPolicy()) .append(this.getInheritanceOverridePolicy(), description.getInheritanceOverridePolicy()) .append(this.getTargetedEntityType(), description.getTargetedEntityType()) .append(this.getImpliedRights(), description.getImpliedRights()) .isEquals(); } }
@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(user, access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } // This converts the document to an entity. PrimaryEntity primaryEntity = this.resolver.resolveEntity(entity.toString()); if (primaryEntity == null) { return null; } // This retrieves the access level for the entity. AccessLevel grantedAccess = this.accessHelper.getAccessLevel(primaryEntity, user.getProfileDocument()); Right grantedRight = grantedAccess.getGrantedRight(); if (grantedRight.equals(access) || (grantedRight.getImpliedRights() != null && grantedRight.getImpliedRights().contains(access))) { return true; } return null; } }
@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } // This converts the document to a patient. Patient patient = this.patientRepository.get(entity.toString()); if (patient == null) { return null; } AccessLevel grantedAccess = this.manager.getEntityAccess(patient).getAccessLevel(user != null ? user.getProfileDocument() : null); if (this.ownerAccess.compareTo(grantedAccess) <= 0) { return true; } return null; } }
@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } // This converts the document to an entity. PrimaryEntity primaryEntity = this.resolver.resolveEntity(entity.toString()); if (primaryEntity == null) { return null; } Visibility visibility = this.helper.getVisibility(primaryEntity); if (visibility == null) { return null; } // Checks if the visibility of Patient Record and the access rights Right grantedRight = visibility.getDefaultAccessLevel().getGrantedRight(); if (user != null && user.getProfileDocument() != null && (grantedRight.equals(access) || (grantedRight.getImpliedRights() != null && grantedRight.getImpliedRights().contains(access)))) { return true; } return null; } }
@Override public Boolean hasAccess(User user, Right access, EntityReference entity) { if (!ObjectUtils.allNotNull(access, entity) || access.getTargetedEntityType() == null || !access.getTargetedEntityType().contains(EntityType.DOCUMENT)) { return null; } Family family = this.familyRepository.get(entity.toString()); if (family == null) { return null; } String ownerStr = (String) this.dab.getProperty(family.getDocumentReference(), this.resolver.resolve(Owner.CLASS_REFERENCE), Owner.PROPERTY_NAME); DocumentReference owner = this.strResolver.resolve(ownerStr); if (isGuestOwner(ownerStr, user) || user != null && owner.equals(user.getProfileDocument())) { return true; } // Grant access to administrators if (this.auth.hasAccess(user, Right.ADMIN, entity)) { return true; } return null; }