use of org.hisp.dhis.tracker.bundle.TrackerBundle in project dhis2-core by dhis2.
the class PreCheckSecurityOwnershipValidationHook method checkOrgUnitInCaptureScope.
private void checkOrgUnitInCaptureScope(ValidationErrorReporter reporter, TrackerDto dto, OrganisationUnit orgUnit) {
TrackerBundle bundle = reporter.getValidationContext().getBundle();
User user = bundle.getUser();
checkNotNull(user, USER_CANT_BE_NULL);
checkNotNull(orgUnit, ORGANISATION_UNIT_CANT_BE_NULL);
if (!organisationUnitService.isInUserHierarchyCached(user, orgUnit)) {
TrackerErrorReport error = TrackerErrorReport.builder().uid(dto.getUid()).trackerType(dto.getTrackerType()).errorCode(TrackerErrorCode.E1000).addArg(user).addArg(orgUnit).build(bundle);
reporter.addError(error);
}
}
use of org.hisp.dhis.tracker.bundle.TrackerBundle in project dhis2-core by dhis2.
the class PreCheckSecurityOwnershipValidationHook method validateTrackedEntity.
@Override
public void validateTrackedEntity(ValidationErrorReporter reporter, TrackedEntity trackedEntity) {
TrackerImportValidationContext context = reporter.getValidationContext();
TrackerImportStrategy strategy = context.getStrategy(trackedEntity);
TrackerBundle bundle = context.getBundle();
User user = bundle.getUser();
checkNotNull(user, USER_CANT_BE_NULL);
checkNotNull(trackedEntity, TRACKED_ENTITY_CANT_BE_NULL);
checkNotNull(trackedEntity.getOrgUnit(), ORGANISATION_UNIT_CANT_BE_NULL);
// scope has to be checked
if (strategy.isCreate() || strategy.isDelete()) {
checkOrgUnitInCaptureScope(reporter, trackedEntity, context.getOrganisationUnit(trackedEntity.getOrgUnit()));
} else // if its to update trackedEntity, search scope has to be checked
{
checkOrgUnitInSearchScope(reporter, trackedEntity, context.getOrganisationUnit(trackedEntity.getOrgUnit()));
}
if (strategy.isDelete()) {
TrackedEntityInstance tei = context.getTrackedEntityInstance(trackedEntity.getTrackedEntity());
if (tei.getProgramInstances().stream().anyMatch(pi -> !pi.isDeleted()) && !user.isAuthorized(Authorities.F_TEI_CASCADE_DELETE.getAuthority())) {
TrackerErrorReport error = TrackerErrorReport.builder().uid(trackedEntity.getUid()).trackerType(TrackerType.TRACKED_ENTITY).errorCode(E1100).addArg(user).addArg(tei).build(bundle);
reporter.addError(error);
}
}
TrackedEntityType trackedEntityType = context.getTrackedEntityType(trackedEntity.getTrackedEntityType());
checkTeiTypeWriteAccess(reporter, trackedEntity.getUid(), trackedEntityType);
}
use of org.hisp.dhis.tracker.bundle.TrackerBundle in project dhis2-core by dhis2.
the class PreCheckSecurityOwnershipValidationHook method checkEventWriteAccess.
private void checkEventWriteAccess(ValidationErrorReporter reporter, Event event, ProgramStage programStage, OrganisationUnit eventOrgUnit, OrganisationUnit ownerOrgUnit, CategoryOptionCombo categoryOptionCombo, String trackedEntity, boolean isCreatableInSearchScope) {
TrackerBundle bundle = reporter.getValidationContext().getBundle();
User user = bundle.getUser();
checkNotNull(user, USER_CANT_BE_NULL);
checkNotNull(programStage, PROGRAM_STAGE_CANT_BE_NULL);
checkNotNull(programStage.getProgram(), PROGRAM_CANT_BE_NULL);
checkEventOrgUnitWriteAccess(reporter, bundle, event, eventOrgUnit, isCreatableInSearchScope, user);
if (programStage.getProgram().isWithoutRegistration()) {
checkProgramWriteAccess(reporter, event, user, programStage.getProgram());
} else {
checkProgramStageWriteAccess(reporter, event, user, programStage);
final Program program = programStage.getProgram();
checkProgramReadAccess(reporter, event, user, program);
checkTeiTypeAndTeiProgramAccess(reporter, event, user, trackedEntity, ownerOrgUnit, programStage.getProgram());
}
if (categoryOptionCombo != null) {
checkWriteCategoryOptionComboAccess(reporter, event, categoryOptionCombo);
}
}
use of org.hisp.dhis.tracker.bundle.TrackerBundle in project dhis2-core by dhis2.
the class PreCheckSecurityOwnershipValidationHook method checkTeiTypeWriteAccess.
private void checkTeiTypeWriteAccess(ValidationErrorReporter reporter, String teUid, TrackedEntityType trackedEntityType) {
TrackerBundle bundle = reporter.getValidationContext().getBundle();
User user = bundle.getUser();
checkNotNull(user, USER_CANT_BE_NULL);
checkNotNull(trackedEntityType, TRACKED_ENTITY_TYPE_CANT_BE_NULL);
if (!aclService.canDataWrite(user, trackedEntityType)) {
TrackerErrorReport error = TrackerErrorReport.builder().uid(teUid).trackerType(TrackerType.TRACKED_ENTITY).errorCode(TrackerErrorCode.E1001).addArg(user).addArg(trackedEntityType).build(bundle);
reporter.addError(error);
}
}
use of org.hisp.dhis.tracker.bundle.TrackerBundle in project dhis2-core by dhis2.
the class PreCheckSecurityOwnershipValidationHook method checkWriteCategoryOptionComboAccess.
public void checkWriteCategoryOptionComboAccess(ValidationErrorReporter reporter, TrackerDto dto, CategoryOptionCombo categoryOptionCombo) {
TrackerBundle bundle = reporter.getValidationContext().getBundle();
User user = bundle.getUser();
checkNotNull(user, USER_CANT_BE_NULL);
checkNotNull(categoryOptionCombo, TrackerImporterAssertErrors.CATEGORY_OPTION_COMBO_CANT_BE_NULL);
for (CategoryOption categoryOption : categoryOptionCombo.getCategoryOptions()) {
if (!aclService.canDataWrite(user, categoryOption)) {
TrackerErrorReport error = TrackerErrorReport.builder().uid(dto.getUid()).trackerType(dto.getTrackerType()).errorCode(TrackerErrorCode.E1099).addArg(user).addArg(categoryOption).build(reporter.getValidationContext().getBundle());
reporter.addError(error);
}
}
}
Aggregations