
dev.dsf.fhir.spring.config.AuthorizationConfig Maven / Gradle / Ivy
package dev.dsf.fhir.spring.config;
import org.hl7.fhir.r4.model.ActivityDefinition;
import org.hl7.fhir.r4.model.Binary;
import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.CodeSystem;
import org.hl7.fhir.r4.model.DocumentReference;
import org.hl7.fhir.r4.model.Endpoint;
import org.hl7.fhir.r4.model.Group;
import org.hl7.fhir.r4.model.HealthcareService;
import org.hl7.fhir.r4.model.Library;
import org.hl7.fhir.r4.model.Location;
import org.hl7.fhir.r4.model.Measure;
import org.hl7.fhir.r4.model.MeasureReport;
import org.hl7.fhir.r4.model.NamingSystem;
import org.hl7.fhir.r4.model.Organization;
import org.hl7.fhir.r4.model.OrganizationAffiliation;
import org.hl7.fhir.r4.model.Patient;
import org.hl7.fhir.r4.model.Practitioner;
import org.hl7.fhir.r4.model.PractitionerRole;
import org.hl7.fhir.r4.model.Provenance;
import org.hl7.fhir.r4.model.Questionnaire;
import org.hl7.fhir.r4.model.QuestionnaireResponse;
import org.hl7.fhir.r4.model.ResearchStudy;
import org.hl7.fhir.r4.model.Resource;
import org.hl7.fhir.r4.model.StructureDefinition;
import org.hl7.fhir.r4.model.Subscription;
import org.hl7.fhir.r4.model.Task;
import org.hl7.fhir.r4.model.ValueSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import dev.dsf.fhir.authorization.ActivityDefinitionAuthorizationRule;
import dev.dsf.fhir.authorization.AuthorizationRule;
import dev.dsf.fhir.authorization.AuthorizationRuleProvider;
import dev.dsf.fhir.authorization.AuthorizationRuleProviderImpl;
import dev.dsf.fhir.authorization.BinaryAuthorizationRule;
import dev.dsf.fhir.authorization.BundleAuthorizationRule;
import dev.dsf.fhir.authorization.CodeSystemAuthorizationRule;
import dev.dsf.fhir.authorization.DocumentReferenceAuthorizationRule;
import dev.dsf.fhir.authorization.EndpointAuthorizationRule;
import dev.dsf.fhir.authorization.GroupAuthorizationRule;
import dev.dsf.fhir.authorization.HealthcareServiceAuthorizationRule;
import dev.dsf.fhir.authorization.LibraryAuthorizationRule;
import dev.dsf.fhir.authorization.LocationAuthorizationRule;
import dev.dsf.fhir.authorization.MeasureAuthorizationRule;
import dev.dsf.fhir.authorization.MeasureReportAuthorizationRule;
import dev.dsf.fhir.authorization.NamingSystemAuthorizationRule;
import dev.dsf.fhir.authorization.OrganizationAffiliationAuthorizationRule;
import dev.dsf.fhir.authorization.OrganizationAuthorizationRule;
import dev.dsf.fhir.authorization.PatientAuthorizationRule;
import dev.dsf.fhir.authorization.PractitionerAuthorizationRule;
import dev.dsf.fhir.authorization.PractitionerRoleAuthorizationRule;
import dev.dsf.fhir.authorization.ProvenanceAuthorizationRule;
import dev.dsf.fhir.authorization.QuestionnaireAuthorizationRule;
import dev.dsf.fhir.authorization.QuestionnaireResponseAuthorizationRule;
import dev.dsf.fhir.authorization.ResearchStudyAuthorizationRule;
import dev.dsf.fhir.authorization.RootAuthorizationRule;
import dev.dsf.fhir.authorization.StructureDefinitionAuthorizationRule;
import dev.dsf.fhir.authorization.SubscriptionAuthorizationRule;
import dev.dsf.fhir.authorization.TaskAuthorizationRule;
import dev.dsf.fhir.authorization.ValueSetAuthorizationRule;
import dev.dsf.fhir.authorization.process.ProcessAuthorizationHelper;
import dev.dsf.fhir.authorization.process.ProcessAuthorizationHelperImpl;
import dev.dsf.fhir.authorization.read.ReadAccessHelper;
import dev.dsf.fhir.authorization.read.ReadAccessHelperImpl;
import dev.dsf.fhir.dao.command.AuthorizationHelper;
import dev.dsf.fhir.dao.command.AuthorizationHelperImpl;
@Configuration
public class AuthorizationConfig
{
@Autowired
private AuthenticationConfig authenticationConfig;
@Autowired
private DaoConfig daoConfig;
@Autowired
private HelperConfig helperConfig;
@Autowired
private PropertiesConfig propertiesConfig;
@Autowired
private ReferenceConfig referenceConfig;
@Autowired
private FhirConfig fhirConfig;
@Bean
public ReadAccessHelper readAccessHelper()
{
return new ReadAccessHelperImpl();
}
@Bean
public ProcessAuthorizationHelper processAuthorizationHelper()
{
return new ProcessAuthorizationHelperImpl();
}
@Bean
public AuthorizationRule activityDefinitionAuthorizationRule()
{
return new ActivityDefinitionAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter(), processAuthorizationHelper());
}
@Bean
public AuthorizationRule binaryAuthorizationRule()
{
return new BinaryAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter(),
// Binary and Task not supported as securityContext rule
activityDefinitionAuthorizationRule(), bundleAuthorizationRule(), codeSystemAuthorizationRule(),
documentReferenceAuthorizationRule(), endpointAuthorizationRule(), groupAuthorizationRule(),
healthcareServiceAuthorizationRule(), libraryAuthorizationRule(), locationAuthorizationRule(),
measureAuthorizationRule(), measureReportAuthorizationRule(), namingSystemAuthorizationRule(),
organizationAuthorizationRule(), organizationAffiliationAuthorizationRule(), patientAuthorizationRule(),
practitionerAuthorizationRule(), practitionerRoleAuthorizationRule(), provenanceAuthorizationRule(),
questionnaireAuthorizationRule(), questionnaireResponseAuthorizationRule(),
researchStudyAuthorizationRule(), structureDefinitionAuthorizationRule(),
subscriptionAuthorizationRule(), valueSetAuthorizationRule());
}
@Bean
public AuthorizationRule bundleAuthorizationRule()
{
return new BundleAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule codeSystemAuthorizationRule()
{
return new CodeSystemAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule documentReferenceAuthorizationRule()
{
return new DocumentReferenceAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule endpointAuthorizationRule()
{
return new EndpointAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule groupAuthorizationRule()
{
return new GroupAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule healthcareServiceAuthorizationRule()
{
return new HealthcareServiceAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule libraryAuthorizationRule()
{
return new LibraryAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule locationAuthorizationRule()
{
return new LocationAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule measureAuthorizationRule()
{
return new MeasureAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule measureReportAuthorizationRule()
{
return new MeasureReportAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule namingSystemAuthorizationRule()
{
return new NamingSystemAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule organizationAuthorizationRule()
{
return new OrganizationAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule organizationAffiliationAuthorizationRule()
{
return new OrganizationAffiliationAuthorizationRule(daoConfig.daoProvider(),
propertiesConfig.getServerBaseUrl(), referenceConfig.referenceResolver(),
authenticationConfig.organizationProvider(), readAccessHelper(), helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule patientAuthorizationRule()
{
return new PatientAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule practitionerAuthorizationRule()
{
return new PractitionerAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule practitionerRoleAuthorizationRule()
{
return new PractitionerRoleAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule provenanceAuthorizationRule()
{
return new ProvenanceAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule questionnaireAuthorizationRule()
{
return new QuestionnaireAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule questionnaireResponseAuthorizationRule()
{
return new QuestionnaireResponseAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule researchStudyAuthorizationRule()
{
return new ResearchStudyAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule structureDefinitionAuthorizationRule()
{
return new StructureDefinitionAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule subscriptionAuthorizationRule()
{
return new SubscriptionAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRule taskAuthorizationRule()
{
return new TaskAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter(), processAuthorizationHelper(), fhirConfig.fhirContext());
}
@Bean
public AuthorizationRule valueSetAuthorizationRule()
{
return new ValueSetAuthorizationRule(daoConfig.daoProvider(), propertiesConfig.getServerBaseUrl(),
referenceConfig.referenceResolver(), authenticationConfig.organizationProvider(), readAccessHelper(),
helperConfig.parameterConverter());
}
@Bean
public AuthorizationRuleProvider authorizationRuleProvider()
{
return new AuthorizationRuleProviderImpl(activityDefinitionAuthorizationRule(), binaryAuthorizationRule(),
bundleAuthorizationRule(), codeSystemAuthorizationRule(), documentReferenceAuthorizationRule(),
endpointAuthorizationRule(), groupAuthorizationRule(), healthcareServiceAuthorizationRule(),
libraryAuthorizationRule(), locationAuthorizationRule(), measureAuthorizationRule(),
measureReportAuthorizationRule(), namingSystemAuthorizationRule(), organizationAuthorizationRule(),
organizationAffiliationAuthorizationRule(), patientAuthorizationRule(), practitionerAuthorizationRule(),
practitionerRoleAuthorizationRule(), provenanceAuthorizationRule(), questionnaireAuthorizationRule(),
questionnaireResponseAuthorizationRule(), researchStudyAuthorizationRule(),
structureDefinitionAuthorizationRule(), subscriptionAuthorizationRule(), taskAuthorizationRule(),
valueSetAuthorizationRule());
}
@Bean
public AuthorizationHelper authorizationHelper()
{
return new AuthorizationHelperImpl(authorizationRuleProvider(), helperConfig.responseGenerator());
}
@Bean
public AuthorizationRule rootAuthorizationRule()
{
return new RootAuthorizationRule();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy