package br.gov.servicos.editor.security; import br.gov.servicos.editor.usuarios.FormularioAcessoCidadao; import br.gov.servicos.editor.usuarios.PapelRepository; import br.gov.servicos.editor.usuarios.Usuario; import lombok.AccessLevel; import lombok.experimental.FieldDefaults; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; @Component @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) public class AcessoCidadaoService { public static final String CIDADAO = "CIDADAO"; PapelRepository papeis; @Autowired public AcessoCidadaoService(PapelRepository papeis) { this.papeis = papeis; } public void autenticaCidadao(FormularioAcessoCidadao cidadao) { Usuario usuario = new Usuario() .withNome(cidadao.getNome()) .withEmailPrimario(cidadao.getEmail()) .withCpf(cidadao.getCpf()) .withPapel(papeis.findByNome(CIDADAO)); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken( usuario, CIDADAO, usuario.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(token); } }