40 lines
1.6 KiB
Kotlin
40 lines
1.6 KiB
Kotlin
package com.kassaev.notes.config
|
|
|
|
import com.kassaev.notes.repository.IUserRepository
|
|
import com.kassaev.notes.repository.UserRepository
|
|
import com.kassaev.notes.service.CustomUserDetailsService
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
|
import org.springframework.context.annotation.Bean
|
|
import org.springframework.context.annotation.Configuration
|
|
import org.springframework.security.authentication.AuthenticationManager
|
|
import org.springframework.security.authentication.AuthenticationProvider
|
|
import org.springframework.security.authentication.dao.DaoAuthenticationProvider
|
|
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration
|
|
import org.springframework.security.core.userdetails.UserDetailsService
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
|
|
import org.springframework.security.crypto.password.PasswordEncoder
|
|
|
|
@Configuration
|
|
@EnableConfigurationProperties(JwtProperties::class)
|
|
class Configuration {
|
|
|
|
@Bean
|
|
fun userDetailsService(userRepository: IUserRepository): UserDetailsService =
|
|
CustomUserDetailsService(userRepository)
|
|
|
|
@Bean
|
|
fun encoder(): PasswordEncoder = BCryptPasswordEncoder()
|
|
|
|
@Bean
|
|
fun authenticationProvider(userRepository: IUserRepository): AuthenticationProvider =
|
|
DaoAuthenticationProvider()
|
|
.also {
|
|
it.setUserDetailsService(userDetailsService(userRepository))
|
|
it.setPasswordEncoder(encoder())
|
|
}
|
|
|
|
@Bean
|
|
fun authenticationManager(config: AuthenticationConfiguration): AuthenticationManager =
|
|
config.authenticationManager
|
|
|
|
} |