Error validating Java user, Spring

0

I'm having an error while validating the user against the database. I debugged and the data (from the front end) is being received by the API.
The method that does the search in the database is correct, but the strange thing is that the user and password comes, but id_entidade and id_entidade_administrador comes with null , thus invalidates the authentication.

Follow the code.

Class Administrators Entity

@Entity
@Table(name = "Entidades_administradores")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Entidadesadministradores.findAll", query = "SELECT e FROM Entidadesadministradores e"),
    @NamedQuery(name = "Entidadesadministradores.findByIdentidadeadministrador", query = "SELECT e FROM Entidadesadministradores e WHERE e.identidadeadministrador = :identidadeadministrador"),
    @NamedQuery(name = "Entidadesadministradores.findByUsuarioadministrador", query = "SELECT e FROM Entidadesadministradores e WHERE e.usuarioadministrador = :usuarioadministrador"),
    @NamedQuery(name = "Entidadesadministradores.findBySenhaadministrador", query = "SELECT e FROM Entidadesadministradores e WHERE e.senhaadministrador = :senhaadministrador")})
public class Entidadesadministradores implements Serializable {    
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "Id_entidade_administrador")
    private Long identidadeadministrador;

    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "Usuario_administrador")
    private String usuarioadministrador;

    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "Senha_administrador")
    private String senhaadministrador;                        

    @JoinColumn(name = "Id_entidade", referencedColumnName = "Id_entidade")
    @ManyToOne(optional = false)
    private Entidades identidade;

    public Entidadesadministradores() {
    }

    public Entidadesadministradores(Long identidadeadministrador) {
        this.identidadeadministrador = identidadeadministrador;
    }

    public Entidadesadministradores(Long identidadeadministrador, String usuarioadministrador, String senhaadministrador) {
        this.identidadeadministrador = identidadeadministrador;
        this.usuarioadministrador = usuarioadministrador;
        this.senhaadministrador = senhaadministrador;
    }

    public Long getIdentidadeadministrador() {
        return identidadeadministrador;
    }

    public void setIdentidadeadministrador(Long identidadeadministrador) {
        this.identidadeadministrador = identidadeadministrador;
    }

    public String getUsuarioadministrador() {
        return usuarioadministrador;
    }

    public void setUsuarioadministrador(String usuarioadministrador) {
        this.usuarioadministrador = usuarioadministrador;
    }

    public String getSenhaadministrador() {
        return senhaadministrador;
    }

    public void setSenhaadministrador(String senhaadministrador) {
        this.senhaadministrador = senhaadministrador;
    }

    public Entidades getIdentidade() {
        return identidade;
    }

    public void setIdentidade(Entidades identidade) {
        this.identidade = identidade;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (identidadeadministrador != null ? identidadeadministrador.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Entidadesadministradores)) {
            return false;
        }
        Entidadesadministradores other = (Entidadesadministradores) object;
        if ((this.identidadeadministrador == null && other.identidadeadministrador != null) || (this.identidadeadministrador != null && !this.identidadeadministrador.equals(other.identidadeadministrador))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entidadesadministradores[ identidadeadministrador=" + identidadeadministrador + " ]";
    }        
}

LoginController class

 @RestController
    public class LoginController {        
        @Autowired
        private EntidadesAdministradoresService eaService;

        @RequestMapping(value = "/autenticar", consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
        public LoginResponse autenticar(@RequestBody Entidadesadministradores entidadesAdministradores) throws ServletException {

            //verifica se foram digitados o login e senha no front end
            if (entidadesAdministradores.getUsuarioadministrador() == null
                    || entidadesAdministradores.getSenhaadministrador() == null) {
                throw new ServletException("Nome ou senha obrigatório");
            }

            // busca no banco de dados
//aqui ocorre o erro entAdministradoresAutenticado fica null nesse ponto            
           Entidadesadministradores entAdministradoresAutenticado = eaService.buscarPorNome(entidadesAdministradores.getUsuarioadministrador());

            if (entAdministradoresAutenticado == null) {
                throw new ServletException("Usuário não encontrado");
            } 

            // compara a senha vinda do banco de dados com a senha vinda da tela
            if (!entAdministradoresAutenticado.getSenhaadministrador()
                    .equals(entidadesAdministradores.getSenhaadministrador())) {
                throw new ServletException(" Senha inválida");
            }

            String token = Jwts.builder().setSubject(entAdministradoresAutenticado.getUsuarioadministrador())
                    .signWith(SignatureAlgorithm.HS512, "digi2fred")
                    .setExpiration(new Date(System.currentTimeMillis() + 3 * 60 * 1000)).compact();

            return new LoginResponse(token); 
        }       

        private class LoginResponse {
            public String token;

            public LoginResponse(String token) {
                this.token = token;
            }

            public String getToken() {
                return token;
            }        
        }        
    }

Entity ClassAdministratorsService

@Service
public class EntidadesAdministradoresService {    
    @Autowired
    EntidadesAdministradoresRepository eaRepository; 

    public Entidadesadministradores buscarPorNome(String usuarioAdministrador){     
        return eaRepository.buscarPorNome(usuarioAdministrador);
    }       
}

Entity Class AdministratorsRepository

@Repository
public interface EntidadesAdministradoresRepository extends JpaRepository<Entidadesadministradores,Integer> {
    @Query(value="Select e from Entidadesadministradores e where e.usuarioadministrador=:parametroUsuario")
    public Entidadesadministradores buscarPorNome(@Param("parametroUsuario") String usuarioAdministrador);   
}

The error that occurs is:

Usuário não encontrado
LoginController.autenticar(LoginController.java:39) ~[classes/:na]
    
asked by anonymous 22.09.2017 / 22:01

1 answer

1

Maybe if you change the snippet

@Repository
public interface EntidadesAdministradoresRepository extends JpaRepository<Entidadesadministradores,Integer> {
    @Query(value="Select e from Entidadesadministradores e where e.usuarioadministrador=:parametroUsuario")
    public Entidadesadministradores buscarPorNome(@Param("parametroUsuario")String usuarioAdministrador);   
}

for

@Repository
public interface EntidadesAdministradoresRepository extends JpaRepository<Entidadesadministradores,Integer> {
    @Query(value="Select e from Entidadesadministradores e where lower(e.usuarioadministrador) = :parametroUsuario")
    public Entidadesadministradores buscarPorNome(@Param("parametroUsuario")String usuarioAdministrador);   
}

your search works again.

Another option is to use LIKE instead of = as a comparison method.

    
23.09.2017 / 00:45