All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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 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