From c7bcca4836f07348e841da62559488e080919a99 Mon Sep 17 00:00:00 2001 From: dongHyo Date: Tue, 31 May 2022 19:43:28 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20UserDetailsService=20CustomService=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/CustomUserDetailsService.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 server/src/main/java/com/ticketing/server/global/service/CustomUserDetailsService.java diff --git a/server/src/main/java/com/ticketing/server/global/service/CustomUserDetailsService.java b/server/src/main/java/com/ticketing/server/global/service/CustomUserDetailsService.java new file mode 100644 index 0000000..e16573a --- /dev/null +++ b/server/src/main/java/com/ticketing/server/global/service/CustomUserDetailsService.java @@ -0,0 +1,35 @@ +package com.ticketing.server.global.service; + +import com.ticketing.server.user.domain.User; +import com.ticketing.server.user.domain.repository.UserRepository; +import java.util.Collections; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +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; + +@Service +@RequiredArgsConstructor +public class CustomUserDetailsService implements UserDetailsService { + + private final UserRepository userRepository; + + @Override + public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { + return userRepository.findByEmailAndIsDeletedFalse(email) + .map(this::createUserDetails) + .orElseThrow(() -> new UsernameNotFoundException("존재하지 않는 email 입니다. :: " + email)); + } + + private UserDetails createUserDetails(User user) { + SimpleGrantedAuthority grantedAuthority = new SimpleGrantedAuthority(user.getGrade().name()); + + return new org.springframework.security.core.userdetails.User( + user.getEmail() + , user.getPassword() + , Collections.singleton(grantedAuthority) + ); + } +}