diff --git a/src/main/java/com/stock/dao/UsuarioDAO.java b/src/main/java/com/stock/dao/UsuarioDAO.java index 1108093085f99657a9f8db7c7e26f0a716491cc1..d252c5529d34dd3a5287a1a88214cb3fcc0629d6 100644 --- a/src/main/java/com/stock/dao/UsuarioDAO.java +++ b/src/main/java/com/stock/dao/UsuarioDAO.java @@ -8,6 +8,7 @@ public interface UsuarioDAO extends GenericDAO<Usuario>{ Usuario obtenerPorNombre(String nombre); - // No lo puedo poner acá si tiene static en Impl + Usuario obtenerPorUsuario(String user); + boolean validar(String user, String password); } diff --git a/src/main/java/com/stock/dao/UsuarioDAOImpl.java b/src/main/java/com/stock/dao/UsuarioDAOImpl.java index 76e5fb3859ea71509cfdc05aa81c9c89daafd648..fd364560f33329849184c4bbc6aec9f00f1893a0 100644 --- a/src/main/java/com/stock/dao/UsuarioDAOImpl.java +++ b/src/main/java/com/stock/dao/UsuarioDAOImpl.java @@ -32,6 +32,36 @@ public class UsuarioDAOImpl extends GenericDAOImpl<Usuario> implements UsuarioDA } } catch (Exception e) { e.printStackTrace(); + return null; + } finally { + // Cerrar el EntityManager + //em.close(); + } + return obj; + } + + @Override + public Usuario obtenerPorUsuario(String user) { + // TODO Auto-generated method stub + EntityManager em = SingletonManFact.getInstance(); + EntityTransaction transaction = em.getTransaction(); + Usuario obj = null; + + try { + //obj = em.find(this.clase, objId); + //TypedQuery<Usuario> query = em.createQuery("SELECT u FROM Usuario u WHERE usuario.usuario = :user", Usuario.class); + TypedQuery<Usuario> query = em.createQuery("FROM Usuario WHERE usuario.usuario = :user", Usuario.class); + //TypedQuery<Usuario> query = em.createQuery("FROM Usuario WHERE usuario.usuario = :user", user); + query.setParameter("user", user); + //List<T> obj = query.getResultList().get(0); + obj = query.getSingleResult(); + + if (obj == null) { + System.out.println("No se encontró ningún elemento con el nombre de usuario " + user); + } + } catch (Exception e) { + e.printStackTrace(); + return null; } finally { // Cerrar el EntityManager //em.close(); @@ -39,8 +69,18 @@ public class UsuarioDAOImpl extends GenericDAOImpl<Usuario> implements UsuarioDA return obj; } - //static? public boolean validar(String user, String password) { - return (user.equals("admin") && password.equals("admin")); + Usuario userAuth = obtenerPorUsuario(user); + if(userAuth == null || userAuth.getValid() == false) { + System.out.print("El usuario no existe\n"); + return false; + } + /*System.out.print("Nombre del usuario: " + userAuth.getNombre() + "\n"); + if (user.equals(userAuth.getUsuario()) && password.equals(userAuth.getContraseña())) { + System.out.print("Login exitoso\n"); + } else { + System.out.print("La contraseña no coincide\n"); + }*/ + return (user.equals(userAuth.getUsuario()) && password.equals(userAuth.getContraseña())); } } diff --git a/src/main/java/com/stock/model/Base.java b/src/main/java/com/stock/model/Base.java index c8f5597b34def9fba773a9f668be53fbbf3e746e..d549d24150c840192ec41ed2a1c12145b8dcbbc3 100644 --- a/src/main/java/com/stock/model/Base.java +++ b/src/main/java/com/stock/model/Base.java @@ -16,12 +16,20 @@ public abstract class Base { @ColumnDefault("1") boolean valid; + public Long getId() { + return id; + } + public void setId(Long id) { this.id = id; } - public Long getId() { - return id; + public boolean getValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; } public Base(){} diff --git a/src/main/java/com/stock/model/Usuario.java b/src/main/java/com/stock/model/Usuario.java index 947fb48c6eb6f4831f43e363680863740d68effe..082715464c32738819e497487509b3cd242531fc 100644 --- a/src/main/java/com/stock/model/Usuario.java +++ b/src/main/java/com/stock/model/Usuario.java @@ -6,8 +6,10 @@ import java.util.List; import javax.persistence.*; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +@Cacheable(false) @Entity //@JsonIgnoreProperties @Table(name="USUARIO") @@ -35,6 +37,7 @@ public class Usuario extends Base { private String apellido; @Column(name = "ICORPORACION") + //@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private Date incorp; @OneToMany(mappedBy = "usuario") @@ -62,13 +65,6 @@ public class Usuario extends Base { //this.valid = true; } -// public Long getId() { -// return id; -// } -// public void setId(Long id) { -// this.id = id; -// } - public int getDni() { return dni; } @@ -122,6 +118,9 @@ public class Usuario extends Base { public Date getIncorp() { return incorp; } + public void setIncorp(Date incorp) { + this.incorp = incorp; + } public List<ProductoTerminado> getProdTermi() { return prodTermi; diff --git a/src/main/java/com/stock/resources/FamProdResource.java b/src/main/java/com/stock/resources/FamProdResource.java index e321f0f1ec83f71fea52df3097011b44bd586b16..dff20269e77099b1fca2c2900afe0f754f232b84 100644 --- a/src/main/java/com/stock/resources/FamProdResource.java +++ b/src/main/java/com/stock/resources/FamProdResource.java @@ -42,6 +42,7 @@ public class FamProdResource { @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response guardar(FamProd obj) { + System.out.print(obj); try { objdao.guardar(obj); return Response.ok().build(); diff --git a/src/main/java/com/stock/resources/Filtro.java b/src/main/java/com/stock/resources/Filtro.java new file mode 100644 index 0000000000000000000000000000000000000000..503b1ff6ceecc4f256c0b584c896b7d0a4b98ac2 --- /dev/null +++ b/src/main/java/com/stock/resources/Filtro.java @@ -0,0 +1,44 @@ +package com.stock.resources; + +import java.io.IOException; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +//import jakarta.servlet.annotation.WebFilter; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + + +public class Filtro implements Filter { + + /** + * Default constructor. + */ + public Filtro() { + // TODO Auto-generated constructor stub + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + + HttpServletResponse res = (HttpServletResponse) response; + HttpServletRequest req = (HttpServletRequest) request; + + res.addHeader("Access-Control-Allow-Origin", "*"); + res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS"); + res.addHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); + res.addHeader("Access-Control-Allow-Credentials", "true"); + + chain.doFilter(request, res); + } + + @Override + public void destroy() {} + + @Override + public void init(FilterConfig fConfig) throws ServletException {} + +} diff --git a/src/main/java/com/stock/resources/LoginServicio.java b/src/main/java/com/stock/resources/LoginServicio.java index efa9ff8bcd3d3bfe01c1f4c99155f53e47464679..be69b0a4e615ae5061718c2babca7b8bd225c5d2 100644 --- a/src/main/java/com/stock/resources/LoginServicio.java +++ b/src/main/java/com/stock/resources/LoginServicio.java @@ -45,6 +45,8 @@ public class LoginServicio { @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response validar(Usuario usuario) { + // El mensaje no incluye el atributo valid del usuario, por lo que siempre llegará como false y dará un Bad Request + // && usuario.getValid() if(usuario != null && usuario.getUsuario() != null && usuario.getContraseña() != null) { boolean status = userdao.validar(usuario.getUsuario(), usuario.getContraseña()); //SignatureAlgorithm signAlg = SignatureAlgorithm.HS256; diff --git a/src/main/java/com/stock/resources/MateriaPrimaResource.java b/src/main/java/com/stock/resources/MateriaPrimaResource.java index 7dd3c0131bb9aa1ac87f91274c7785b462c8e317..f39f41321b3d7c0fca54322cf928f1a6756c3e18 100644 --- a/src/main/java/com/stock/resources/MateriaPrimaResource.java +++ b/src/main/java/com/stock/resources/MateriaPrimaResource.java @@ -44,6 +44,7 @@ public class MateriaPrimaResource { @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response guardar(MateriaPrima obj) { + System.out.print(obj); try { objdao.guardar(obj); return Response.ok().build(); diff --git a/src/main/java/com/stock/resources/UsuariosResource.java b/src/main/java/com/stock/resources/UsuariosResource.java index ca7d4745a5a83a7fe872fb7af2afacb0f33795ca..3a7d5c151b07cccc024f065666cb335721ddd061 100644 --- a/src/main/java/com/stock/resources/UsuariosResource.java +++ b/src/main/java/com/stock/resources/UsuariosResource.java @@ -63,7 +63,7 @@ public class UsuariosResource { public Response editar(Usuario obj){ Usuario aux = objdao.obtenerPorId(obj.getId()); if (aux != null){ - objdao.actualizar(obj);; + objdao.actualizar(obj); return Response.ok().entity(obj).build(); } else { return Response.status(Response.Status.NOT_FOUND).entity("[]").build(); diff --git a/src/main/java/com/stock/singleton/SingletonManFact.java b/src/main/java/com/stock/singleton/SingletonManFact.java index e6a20505452c54df497e155bb6c3f408d4d8350d..a113ba981dc91e0d778333f527959d0fc2fb5b46 100644 --- a/src/main/java/com/stock/singleton/SingletonManFact.java +++ b/src/main/java/com/stock/singleton/SingletonManFact.java @@ -17,7 +17,6 @@ public class SingletonManFact { emf = Persistence.createEntityManagerFactory("miUP"); em = emf.createEntityManager(); } - return em; } diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 57eb69a494eb8b663d14a7d7ca6b824c9b37194a..b7d534179b92250b5ab7eb24c503ecf999efb3aa 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -12,6 +12,9 @@ <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.schema-generation.database.action" value="create"/> + + <property name="hibernate.cache.use_second_level_cache" value="false"/> + <property name="hibernate.cache.use_query_cache" value="false"/> <!-- <property name="hibernate.hbm2ddl.auto" value="update"/> --> </properties> </persistence-unit> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 94380526a012f5a5762b489f7609418c995ab2bc..665107590c5f0d07d2955cdb0d4d868106cb40b4 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -20,6 +20,15 @@ </servlet-mapping> <filter> + <filter-name>Filtro</filter-name> + <filter-class>com.stock.resources.Filtro</filter-class> + </filter> + <filter-mapping> + <filter-name>Filtro</filter-name> + <url-pattern>/rest/*</url-pattern> + </filter-mapping> + + <!-- filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> @@ -50,7 +59,8 @@ <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> - </filter-mapping> + </filter-mapping --> + <!-- servlet> <servlet-name>OpenApi</servlet-name> <servlet-class>io.swagger.v3.jaxrs2.integration.OpenApiServlet</servlet-class> <init-param> <param-name>openApi.configuration.resourcePackages</param-name> <param-value>com.stock.resources</param-value> </init-param> <load-on-startup>2</load-on-startup>