
br.com.jhonsapp.bootstrap.settings.security.authentication.UserDetailsServiceImpl Maven / Gradle / Ivy
package br.com.jhonsapp.bootstrap.settings.security.authentication;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
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;
import br.com.jhonsapp.bootstrap.model.user.FinalUser;
import br.com.jhonsapp.bootstrap.repository.user.FinalUserRepository;
/**
* Usado para autorizar o usuário a ter ou não acesso na aplicação.
* */
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private FinalUserRepository repository;
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
Optional userOptional = repository.findByUserNameAndActive(userName);
FinalUser user = userOptional.orElseThrow(() -> new UsernameNotFoundException("Usuário e/ou senha incorretos"));
return new User(userName, user.getPassword(), getPermissions(user));
}
private Collection extends GrantedAuthority> getPermissions(FinalUser user) {
Set authorities = new HashSet<>();
List permissoes = repository.findPermissions(user);
permissoes.forEach(p -> authorities.add(new SimpleGrantedAuthority(p.toUpperCase())));
return authorities;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy