package com.porterhead.configuration;
import com.porterhead.mail.MailSenderService;
import com.porterhead.user.*;
import com.porterhead.user.resource.MeResource;
import com.porterhead.user.resource.PasswordResource;
import com.porterhead.user.resource.UserResource;
import com.porterhead.user.resource.VerificationResource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.provider.ClientDetailsService;
import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
import javax.validation.Validator;
@Configuration
public class UserConfiguration {
@Autowired
private UserRepository userRepository;
@Autowired
private VerificationTokenRepository verificationTokenRepository;
@Autowired
private MailSenderService mailSenderService;
@Autowired
private Validator validator;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private DefaultTokenServices tokenServices;
@Autowired
private ClientDetailsService clientDetailsService;
@Bean
public VerificationTokenService verificationTokenService() {
return new VerificationTokenServiceImpl(userRepository, verificationTokenRepository, mailSenderService, validator, passwordEncoder);
}
@Bean
public UserService userService() {
return new UserServiceImpl(userRepository, validator, passwordEncoder);
}
@Bean
public UserResource userResource() {
return new UserResource(userService(), verificationTokenService(), tokenServices, passwordEncoder, clientDetailsService);
}
@Bean
public PasswordResource passwordResource() {
return new PasswordResource();
}
@Bean
public VerificationResource verificationResource() {
return new VerificationResource();
}
@Bean
public MeResource meResource() {
return new MeResource();
}
}