0
I have an error validating the user next to the database.
I’ve debugged and the data (which you see from the front end) is being received by the API.
The method that makes the search in the database is correct, but the strange thing is that comes the user and the password but the id_entidade
and the id_entidade_administrador
comes null
, then invalidates the authentication.
Follows the code.
Class Entity Administrators
@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;
}
}
}
Class Entidadeadministradoresservice
@Service
public class EntidadesAdministradoresService {
@Autowired
EntidadesAdministradoresRepository eaRepository;
public Entidadesadministradores buscarPorNome(String usuarioAdministrador){
return eaRepository.buscarPorNome(usuarioAdministrador);
}
}
Class Entidadesadministratorsrepository
@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]