package com.qprogramming.tasq.config;
import com.qprogramming.tasq.account.UserService;
import com.qprogramming.tasq.signin.PersistentTokenRepositoryImpl;
import com.qprogramming.tasq.signin.RememberMeTokenRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.security.authentication.RememberMeAuthenticationProvider;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.RememberMeServices;
import org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices;
import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository;
@Configuration
@ImportResource(value = "classpath:spring-security-context.xml")
public class SecurityConfig {
@Autowired
private RememberMeTokenRepository rememberMeTokenRepository;
@Bean
public UserService userService() {
return new UserService();
}
@Bean
public RememberMeServices rememberMeServices() {
return new PersistentTokenBasedRememberMeServices(
"tasq-aWreDWE4343asrwerewraWeFFTgxcv9u1X", userService(),
persistentTokenRepository());
}
@Bean
public RememberMeAuthenticationProvider rememberMeAuthenticationProvider() {
return new RememberMeAuthenticationProvider(
"test");
}
@Bean
public PersistentTokenRepository persistentTokenRepository() {
return new PersistentTokenRepositoryImpl(rememberMeTokenRepository);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(11);
}
}