CustomUserDetailsService.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package es.uv.garcosda.security;
  2. import java.util.Collection;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.security.core.GrantedAuthority;
  5. import org.springframework.security.core.authority.AuthorityUtils;
  6. import org.springframework.security.core.userdetails.UserDetails;
  7. import org.springframework.security.core.userdetails.UserDetailsService;
  8. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import es.uv.garcosda.domain.User;
  12. import es.uv.garcosda.repositories.UserRepository;
  13. @Service
  14. @Transactional
  15. public class CustomUserDetailsService implements UserDetailsService {
  16. @Autowired
  17. private UserRepository userRepository;
  18. @Override
  19. public UserDetails loadUserByUsername(String userName)
  20. throws UsernameNotFoundException {
  21. User user = userRepository.findByUsername(userName)
  22. .orElseThrow(() -> new UsernameNotFoundException("User "+userName+" not found"));
  23. return new org.springframework.security.core.userdetails.User(
  24. user.getUsername(),
  25. user.getPassword(),
  26. getAuthorities(user));
  27. }
  28. private static Collection<? extends GrantedAuthority> getAuthorities(User user) {
  29. String[] userRoles = user.getRoles()
  30. .stream()
  31. .map((role) -> role.getName())
  32. .toArray(String[]::new);
  33. Collection<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(userRoles);
  34. return authorities;
  35. }
  36. }