feat: UserDetailsService CustomService 구현

This commit is contained in:
dongHyo
2022-05-31 19:43:28 +09:00
parent eeaaafe991
commit c7bcca4836

View File

@@ -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)
);
}
}