package com.algaworks.pedidovenda.security; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.springframework.security.core.GrantedAuthority; 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 com.algaworks.pedidovenda.model.Grupo; import com.algaworks.pedidovenda.model.Usuario; import com.algaworks.pedidovenda.repository.Usuarios; import com.algaworks.pedidovenda.util.cdi.CDIServiceLocator; public class AppUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { Usuarios usuarios = CDIServiceLocator.getBean(Usuarios.class); Usuario usuario = usuarios.porEmail(email); UsuarioSistema user = null; if (usuario != null) { user = new UsuarioSistema(usuario, getGrupos(usuario)); } return user; } private Collection<? extends GrantedAuthority> getGrupos(Usuario usuario) { List<SimpleGrantedAuthority> authorities = new ArrayList<>(); for (Grupo grupo : usuario.getGrupos()) { authorities.add(new SimpleGrantedAuthority(grupo.getNome().toUpperCase())); } return authorities; } }