package org.apereo.cas.config; import org.apereo.cas.authentication.AuthenticationServiceSelectionPlan; import org.apereo.cas.authentication.AuthenticationSystemSupport; import org.apereo.cas.configuration.CasConfigurationProperties; import org.apereo.cas.consent.ConsentEngine; import org.apereo.cas.consent.ConsentRepository; import org.apereo.cas.services.ServicesManager; import org.apereo.cas.ticket.registry.TicketRegistrySupport; import org.apereo.cas.web.flow.CasWebflowConfigurer; import org.apereo.cas.web.flow.CheckConsentRequiredAction; import org.apereo.cas.web.flow.ConsentWebflowConfigurer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.execution.Action; /** * This is {@link CasConsentWebflowConfiguration}. * * @author Misagh Moayyed * @since 5.1.0 */ @Configuration("casConsentWebflowConfiguration") @EnableConfigurationProperties(CasConfigurationProperties.class) @ConditionalOnBean(name = "consentRepository") public class CasConsentWebflowConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(CasConsentWebflowConfiguration.class); @Autowired @Qualifier("loginFlowRegistry") private FlowDefinitionRegistry loginFlowDefinitionRegistry; @Autowired private FlowBuilderServices flowBuilderServices; @Autowired @Qualifier("defaultAuthenticationSystemSupport") private AuthenticationSystemSupport authenticationSystemSupport; @Autowired @Qualifier("authenticationServiceSelectionPlan") private AuthenticationServiceSelectionPlan authenticationRequestServiceSelectionStrategies; @Autowired @Qualifier("defaultTicketRegistrySupport") private TicketRegistrySupport ticketRegistrySupport; @Autowired @Qualifier("consentEngine") private ConsentEngine consentEngine; @Autowired @Qualifier("consentRepository") private ConsentRepository consentRepository; @Autowired @Qualifier("servicesManager") private ServicesManager servicesManager; @Autowired private CasConfigurationProperties casProperties; @ConditionalOnMissingBean(name = "checkConsentRequiredAction") @Bean public Action checkConsentRequiredAction() { return new CheckConsentRequiredAction(servicesManager, authenticationRequestServiceSelectionStrategies, authenticationSystemSupport, consentRepository, consentEngine); } @Bean public CasWebflowConfigurer consentWebflowConfigurer() { return new ConsentWebflowConfigurer(flowBuilderServices, loginFlowDefinitionRegistry); } }