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]