notes_backend/src/main/kotlin/com/kassaev/notes/service/CustomUserDetailsService.kt

26 lines
1002 B
Kotlin

package com.kassaev.notes.service
import com.kassaev.notes.repository.UserRepository
import org.springframework.security.core.userdetails.User
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.springframework.stereotype.Service
typealias ApplicationUser = com.kassaev.notes.model.User
@Service
class CustomUserDetailsService(
private val userRepository: UserRepository
): UserDetailsService {
override fun loadUserByUsername(username: String): UserDetails =
userRepository.findByEmail(username)
?.mapToUserDetails()
?: throw UsernameNotFoundException("Not found!")
private fun ApplicationUser.mapToUserDetails(): UserDetails =
User.builder()
.username(this.email)
.password(this.password)
.roles(this.role.name)
.build()
}