All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ikasan.dashboard.beans.IkasanSecurityConfiguration Maven / Gradle / Ivy

The newest version!
package org.ikasan.dashboard.beans;

import org.ikasan.dashboard.ui.util.SystemEventLogger;
import org.ikasan.security.SecurityAutoConfiguration;
import org.ikasan.security.dao.SecurityDao;
import org.ikasan.security.dao.UserDao;
import org.ikasan.security.service.*;
import org.ikasan.security.service.authentication.AuthenticationProviderFactory;
import org.ikasan.security.service.authentication.AuthenticationProviderFactoryImpl;
import org.ikasan.security.service.authentication.CustomAuthenticationProvider;
import org.ikasan.spec.systemevent.SystemEventService;
import org.ikasan.systemevent.SystemEventAutoConfiguration;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.security.access.method.P;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.crypto.password.PasswordEncoder;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
@ImportResource( {
    "classpath:datasource-conf.xml",
    "classpath:transaction-conf.xml"
} )
@Import({SecurityAutoConfiguration.class, SystemEventAutoConfiguration.class})
public class IkasanSecurityConfiguration
{
    @Value("${hibernate.show_sql:false}")
    private boolean hibernateShowSql;

    @Value("${hibernate.transaction.jta.platform:org.hibernate.engine.transaction.jta.platform.internal.JBossStandAloneJtaPlatform}")
    private String hibernateTransactionJtaPlatform;

    @Value("${hibernate.event.merge.entity_copy_observer:allow}")
    private String hibernateEventMergeEntityCopyObserver;

    @Bean
    @Primary
    public UserService userService(UserDao userDao, SecurityService securityService, PasswordEncoder passwordEncoder)
    {
        return new UserServiceImpl(userDao, securityService, passwordEncoder, false);
    }

    @Bean
    public SystemEventLogger systemEventLogger(SystemEventService systemEventService)
    {
        return new SystemEventLogger(systemEventService);
    }


    @Bean(name = "entityManagerFactory") // todo work out why we need a been named entity manager factory in the context
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(@Qualifier("ikasan.ds")DataSource dataSource
        , JpaVendorAdapter jpaVendorAdapter, @Qualifier("platformJpaProperties") Properties platformJpaProperties) {
        LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean
            = new LocalContainerEntityManagerFactoryBean();
        localContainerEntityManagerFactoryBean.setDataSource(dataSource);
        localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
        localContainerEntityManagerFactoryBean.setJpaProperties(platformJpaProperties);
        localContainerEntityManagerFactoryBean.setPersistenceUnitName("security");
        localContainerEntityManagerFactoryBean.setPersistenceXmlLocation("classpath:security-persistence.xml");

        return localContainerEntityManagerFactoryBean;
    }

    @Bean
    public AuthenticationService authenticationService(SecurityService securityService, UserService userService){

        AuthenticationProviderFactory authenticationProviderFactory = new AuthenticationProviderFactoryImpl(userService,securityService);
        return new AuthenticationServiceImpl(authenticationProviderFactory,securityService);
    }

    @Bean
    public AuthenticationProvider ikasanAuthenticationProvider(AuthenticationService authenticationService){

        return new CustomAuthenticationProvider(authenticationService);

    }

    @Bean
    public LdapService ldapService(SecurityDao securityDao, UserDao userDao, PasswordEncoder passwordEncoder)
    {
        return new LdapServiceImpl(securityDao, userDao, passwordEncoder);
    }

    @Bean
    public AuthenticationProviderFactory authenticationProviderFactory(UserService userService, SecurityService securityService)
    {
        return new AuthenticationProviderFactoryImpl(userService, securityService);
    }

    @Bean
    Properties platformJpaProperties() {
        Properties platformJpaProperties = new Properties();
        platformJpaProperties.put("hibernate.show_sql", hibernateShowSql);
        platformJpaProperties.put("hibernate.hbm2ddl.auto", "none");
        platformJpaProperties.put("hibernate.transaction.jta.platform",
            hibernateTransactionJtaPlatform);
        platformJpaProperties.put("hibernate.event.merge.entity_copy_observer",
            hibernateEventMergeEntityCopyObserver);

        return platformJpaProperties;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy