From cdd93ae5b73343b133538171d4bd0feefb1c4a94 Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 25 Jul 2014 13:40:25 +0000 Subject: [PATCH] --- Merge --- Complexidade Senha - Tempo de Validade (fixed bug #5521) Tempo: 1 horas git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@36828 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/UsuarioHibernateDAO.java | 101 ++-- .../ventaboletos/entidad/Usuario.java | 474 ++++++++++-------- .../ventaboletos/service/UsuarioService.java | 8 +- .../service/impl/UsuarioServiceImpl.java | 96 +++- .../ventaboletos/utilerias/DateUtil.java | 11 + 5 files changed, 392 insertions(+), 298 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/UsuarioHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/UsuarioHibernateDAO.java index 11cf41fc7..b27847d30 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/UsuarioHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/UsuarioHibernateDAO.java @@ -4,13 +4,6 @@ */ package com.rjconsultores.ventaboletos.dao.hibernate; -import com.rjconsultores.ventaboletos.dao.UsuarioDAO; -import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder; -import com.rjconsultores.ventaboletos.entidad.Empleado; -import com.rjconsultores.ventaboletos.entidad.Usuario; -import com.rjconsultores.ventaboletos.vo.caja.UsuarioActivoVO; - -import java.util.ArrayList; import java.util.List; import org.hibernate.Criteria; @@ -26,8 +19,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; +import com.rjconsultores.ventaboletos.dao.UsuarioDAO; +import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder; +import com.rjconsultores.ventaboletos.entidad.Empleado; +import com.rjconsultores.ventaboletos.entidad.Usuario; +import com.rjconsultores.ventaboletos.vo.caja.UsuarioActivoVO; + /** - * + * * @author rodrigo */ @Repository("usuarioDAO") @@ -35,65 +34,65 @@ public class UsuarioHibernateDAO extends GenericHibernateDAO i @Autowired private SQLBuilder sqlBuilder; - @Autowired - public UsuarioHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { - setSessionFactory(factory); - } + @Autowired + public UsuarioHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } - @Override - public List obtenerTodos() { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); + @Override + public List obtenerTodos() { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); - return c.list(); - } + return c.list(); + } - public List buscarPeloNome(String nome) { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); + public List buscarPeloNome(String nome) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); - c.add(Restrictions.eq("nombusuario", nome)); - c.addOrder(Order.asc("nombusuario")); + c.add(Restrictions.eq("nombusuario", nome)); + c.addOrder(Order.asc("nombusuario")); - return c.list(); - } + return c.list(); + } - public Usuario buscarPeloNomeSenha(String stUsuario, String senha) { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("claveUsuario", stUsuario)); - c.add(Restrictions.eq("senha", senha)); - c.add(Restrictions.eq("activo", Boolean.TRUE)); + public Usuario buscarPeloNomeSenha(String stUsuario, String senha) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("claveUsuario", stUsuario)); + c.add(Restrictions.eq("senha", senha)); + c.add(Restrictions.eq("activo", Boolean.TRUE)); - return (Usuario) c.uniqueResult(); - } + return (Usuario) c.uniqueResult(); + } - public List buscarPorEmpleado(Empleado empleado) { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); + public List buscarPorEmpleado(Empleado empleado) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); - c.add(Restrictions.eq("empleado", empleado)); + c.add(Restrictions.eq("empleado", empleado)); - return c.list(); - } + return c.list(); + } - public List buscarPelaCveUsuario(String cveUsuario) { - Query query = getSession().createQuery("select u from Usuario u where u.activo =1 and u.claveUsuario = :clave order by u.claveUsuario" ); - query.setParameter("clave", cveUsuario); - - return query.list(); - } - - @SuppressWarnings("unchecked") + public List buscarPelaCveUsuario(String cveUsuario) { + Query query = getSession().createQuery("select u from Usuario u where u.activo =1 and u.claveUsuario = :clave order by u.claveUsuario"); + query.setParameter("clave", cveUsuario); + + return query.list(); + } + + @SuppressWarnings("unchecked") public List buscarUsuariosActivo() { - String sqlBuscarUsuariosActivo = sqlBuilder.getSQLBuscarUsuariosActivo(); - + String sqlBuscarUsuariosActivo = sqlBuilder.getSQLBuscarUsuariosActivo(); + SQLQuery sql = getSession().createSQLQuery(sqlBuscarUsuariosActivo) .addScalar("usuarioId", IntegerType.INSTANCE) .addScalar("cveusuario", StringType.INSTANCE) .addScalar("nombusuario", StringType.INSTANCE); - + sql.setResultTransformer(new AliasToBeanResultTransformer(UsuarioActivoVO.class)); - return sql.list(); - } + return sql.list(); + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/Usuario.java b/src/com/rjconsultores/ventaboletos/entidad/Usuario.java index fe184cfb5..b0838c1d6 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Usuario.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Usuario.java @@ -6,6 +6,7 @@ package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.List; @@ -32,8 +33,13 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; +import com.rjconsultores.ventaboletos.service.ConstanteService; +import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; + /** - * + * * @author rodrigo */ @Entity @@ -41,269 +47,283 @@ import org.springframework.security.core.userdetails.UserDetails; @Table(name = "USUARIO") public class Usuario implements Serializable, Authentication, UserDetails { - private static final long serialVersionUID = 1L; - @Id - @GeneratedValue(strategy = GenerationType.AUTO, generator = "USUARIO_SEQ") - @Basic(optional = false) - @Column(name = "USUARIO_ID") - private Integer usuarioId; - @Column(name = "NOMBUSUARIO") - private String nombusuario; - @Column(name = "NOMBPATERNO") - private String nombpaterno; - @Column(name = "NOMBMATERNO") - private String nombmaterno; - @Column(name = "ACTIVO") - private Boolean activo; - @Column(name = "FECMODIF") - @Temporal(TemporalType.TIMESTAMP) - private Date fecmodif; - @Column(name = "USUARIOMODIF_ID") - private Integer usuariomodifId; - @Column(name = "DESCCONTRASENA") - private String senha; - @Column(name = "CVEUSUARIO") - private String claveUsuario; - @Column(name = "DESCCORREO") - private String descCorreo; - @OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL,fetch=FetchType.EAGER) - @Fetch(FetchMode.SELECT) - private List usuarioPerfilList; + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "USUARIO_SEQ") + @Basic(optional = false) + @Column(name = "USUARIO_ID") + private Integer usuarioId; + @Column(name = "NOMBUSUARIO") + private String nombusuario; + @Column(name = "NOMBPATERNO") + private String nombpaterno; + @Column(name = "NOMBMATERNO") + private String nombmaterno; + @Column(name = "ACTIVO") + private Boolean activo; + @Column(name = "FECMODIF") + @Temporal(TemporalType.TIMESTAMP) + private Date fecmodif; + @Column(name = "USUARIOMODIF_ID") + private Integer usuariomodifId; + @Column(name = "DESCCONTRASENA") + private String senha; + @Column(name = "CVEUSUARIO") + private String claveUsuario; + @Column(name = "DESCCORREO") + private String descCorreo; + @OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @Fetch(FetchMode.SELECT) + private List usuarioPerfilList; @Column(name = "INDCORTEAUTOMATICO") private Boolean indCorteAutomatico; - @OneToOne - @JoinColumn(name = "EMPLEADO_ID") - private Empleado empleado; - @OneToMany(mappedBy = "usuarioLog", cascade = CascadeType.ALL,fetch=FetchType.EAGER) - @Fetch(FetchMode.SELECT) - private List usuarioEmpresaList; - - @OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL, fetch=FetchType.EAGER) - @Fetch(FetchMode.SELECT) - private List usuarioUbicacionList; - - - + @OneToOne + @JoinColumn(name = "EMPLEADO_ID") + private Empleado empleado; + @OneToMany(mappedBy = "usuarioLog", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @Fetch(FetchMode.SELECT) + private List usuarioEmpresaList; - public String getClaveUsuario() { - return claveUsuario; - } + @OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @Fetch(FetchMode.SELECT) + private List usuarioUbicacionList; - public void setClaveUsuario(String claveUsuario) { - this.claveUsuario = claveUsuario; - } + @Column(name = "FECCONTRASENA") + @Temporal(TemporalType.TIMESTAMP) + private Date fecContrasena; - public Usuario() { - } + public String getClaveUsuario() { + return claveUsuario; + } - public Usuario(Integer usuarioId) { - this.usuarioId = usuarioId; - } + public void setClaveUsuario(String claveUsuario) { + this.claveUsuario = claveUsuario; + } - public Integer getUsuarioId() { - return usuarioId; - } + public Usuario() { + } - public void setUsuarioId(Integer usuarioId) { - this.usuarioId = usuarioId; - } + public Usuario(Integer usuarioId) { + this.usuarioId = usuarioId; + } - public String getNombusuario() { - return nombusuario; - } + public Integer getUsuarioId() { + return usuarioId; + } - public void setNombusuario(String nombusuario) { - this.nombusuario = nombusuario; - } + public void setUsuarioId(Integer usuarioId) { + this.usuarioId = usuarioId; + } - public String getNombpaterno() { - return nombpaterno; - } + public String getNombusuario() { + return nombusuario; + } - public void setNombpaterno(String nombpaterno) { - this.nombpaterno = nombpaterno; - } + public void setNombusuario(String nombusuario) { + this.nombusuario = nombusuario; + } - public String getNombmaterno() { - return nombmaterno; - } + public String getNombpaterno() { + return nombpaterno; + } - public void setNombmaterno(String nombmaterno) { - this.nombmaterno = nombmaterno; - } + public void setNombpaterno(String nombpaterno) { + this.nombpaterno = nombpaterno; + } - public Boolean getActivo() { - return activo; - } + public String getNombmaterno() { + return nombmaterno; + } - public void setActivo(Boolean activo) { - this.activo = activo; - } + public void setNombmaterno(String nombmaterno) { + this.nombmaterno = nombmaterno; + } - public Date getFecmodif() { - return fecmodif; - } + public Boolean getActivo() { + return activo; + } - public void setFecmodif(Date fecmodif) { - this.fecmodif = fecmodif; - } + public void setActivo(Boolean activo) { + this.activo = activo; + } - public Integer getUsuariomodifId() { - return usuariomodifId; - } + public Date getFecmodif() { + return fecmodif; + } - public void setUsuariomodifId(Integer usuariomodifId) { - this.usuariomodifId = usuariomodifId; - } + public void setFecmodif(Date fecmodif) { + this.fecmodif = fecmodif; + } - public String getSenha() { - return senha; - } + public Integer getUsuariomodifId() { + return usuariomodifId; + } - public void setSenha(String senha) { - this.senha = senha; - } - - - public List getUsuarioEmpresaList() { - List tmp = new ArrayList(); - if (usuarioEmpresaList != null) { - for (UsuarioEmpresa ce : this.usuarioEmpresaList) { - if (ce.getActivo()) { - tmp.add(ce); - } - } - } + public void setUsuariomodifId(Integer usuariomodifId) { + this.usuariomodifId = usuariomodifId; + } - return tmp; - } + public String getSenha() { + return senha; + } - public void setUsuarioEmpresaList(List usuarioEmpresaList) { - this.usuarioEmpresaList = usuarioEmpresaList; - } + public void setSenha(String senha) { + this.senha = senha; + } - public List getUsuarioPerfilList() { - List tmp = new ArrayList(); - if (usuarioPerfilList != null) { - for (UsuarioPerfil cp : this.usuarioPerfilList) { - if (cp.getActivo()) { - tmp.add(cp); - } - } - } + public List getUsuarioEmpresaList() { + List tmp = new ArrayList(); + if (usuarioEmpresaList != null) { + for (UsuarioEmpresa ce : this.usuarioEmpresaList) { + if (ce.getActivo()) { + tmp.add(ce); + } + } + } - return tmp; - } - - - public List getEmpresa() { - List tmp = new ArrayList(); - if (usuarioEmpresaList != null) { - for (UsuarioEmpresa cp : this.usuarioEmpresaList) { - if ((cp.getActivo())) { - tmp.add(cp.getEmpresa()); - } - } - } + return tmp; + } - return tmp; - } + public void setUsuarioEmpresaList(List usuarioEmpresaList) { + this.usuarioEmpresaList = usuarioEmpresaList; + } - public void setUsuarioPerfilList(List usuarioPerfilList) { - this.usuarioPerfilList = usuarioPerfilList; - } + public List getUsuarioPerfilList() { + List tmp = new ArrayList(); + if (usuarioPerfilList != null) { + for (UsuarioPerfil cp : this.usuarioPerfilList) { + if (cp.getActivo()) { + tmp.add(cp); + } + } + } - public Empleado getEmpleado() { - return empleado; - } + return tmp; + } - public void setEmpleado(Empleado empleado) { - this.empleado = empleado; - } + public List getEmpresa() { + List tmp = new ArrayList(); + if (usuarioEmpresaList != null) { + for (UsuarioEmpresa cp : this.usuarioEmpresaList) { + if ((cp.getActivo())) { + tmp.add(cp.getEmpresa()); + } + } + } - @Override - public int hashCode() { - int hash = 0; - hash += (usuarioId != null ? usuarioId.hashCode() : 0); - return hash; - } + return tmp; + } - @Override - public boolean equals(Object object) { - if (!(object instanceof Usuario)) { - return false; - } - Usuario other = (Usuario) object; - if ((this.usuarioId == null && other.usuarioId != null) || (this.usuarioId != null && !this.usuarioId.equals(other.usuarioId))) { - return false; - } - return true; - } + public void setUsuarioPerfilList(List usuarioPerfilList) { + this.usuarioPerfilList = usuarioPerfilList; + } - @Override - public String toString() { - return "com.rjconsultores.ventaboletos.entidad.Usuario[usuarioId=" + usuarioId + "]"; - } + public Empleado getEmpleado() { + return empleado; + } - public Collection getAuthorities() { - return new ArrayList(); - } + public void setEmpleado(Empleado empleado) { + this.empleado = empleado; + } - public String getPassword() { - return this.senha; - } + @Override + public int hashCode() { + int hash = 0; + hash += (usuarioId != null ? usuarioId.hashCode() : 0); + return hash; + } - public String getUsername() { - return this.nombusuario; - } + @Override + public boolean equals(Object object) { + if (!(object instanceof Usuario)) { + return false; + } + Usuario other = (Usuario) object; + if ((this.usuarioId == null && other.usuarioId != null) || (this.usuarioId != null && !this.usuarioId.equals(other.usuarioId))) { + return false; + } + return true; + } - public boolean isAccountNonExpired() { - return true; - } + @Override + public String toString() { + return "com.rjconsultores.ventaboletos.entidad.Usuario[usuarioId=" + usuarioId + "]"; + } - public boolean isAccountNonLocked() { - return true; - } + public Collection getAuthorities() { + return new ArrayList(); + } - public boolean isCredentialsNonExpired() { - return true; - } + public String getPassword() { + return this.senha; + } - public boolean isEnabled() { - return true; - } + public String getUsername() { + return this.nombusuario; + } - public Object getCredentials() { - return new Object(); - } + public boolean isAccountNonExpired() { + return true; + } - public Object getDetails() { - return new Object(); - } + public boolean isAccountNonLocked() { + return true; + } - public Object getPrincipal() { - return this; - } + public boolean isCredentialsNonExpired() { + if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) { + if (getFecContrasena() != null) { + ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); + Constante contante = constanteService.buscarPorNomeConstante("CANT_DIAS_CONTRASENA"); + Integer maxPrazoCambioContrasena = Integer.valueOf(contante.getValorconstante()); + Date maxFechaContrasena = DateUtil.somarDias(getFecContrasena(), maxPrazoCambioContrasena); + if (Calendar.getInstance().getTime().after(maxFechaContrasena)) { + return false; + } + } else { + return false; + } + } - public boolean isAuthenticated() { - return Boolean.TRUE; - } + return true; + } - public void setAuthenticated(boolean bln) throws IllegalArgumentException { - } + public boolean isEnabled() { + return true; + } - public String getName() { - return this.getNombusuario(); - } + public Object getCredentials() { + return new Object(); + } - public String getDescCorreo() { - return descCorreo; - } + public Object getDetails() { + return new Object(); + } - public void setDescCorreo(String descCorreo) { - this.descCorreo = descCorreo; - } - public Boolean getIndCorteAutomatico() { + public Object getPrincipal() { + return this; + } + + public boolean isAuthenticated() { + return Boolean.TRUE; + } + + public void setAuthenticated(boolean bln) throws IllegalArgumentException { + } + + public String getName() { + return this.getNombusuario(); + } + + public String getDescCorreo() { + return descCorreo; + } + + public void setDescCorreo(String descCorreo) { + this.descCorreo = descCorreo; + } + + public Boolean getIndCorteAutomatico() { return indCorteAutomatico; } @@ -313,17 +333,25 @@ public class Usuario implements Serializable, Authentication, UserDetails { public List getUsuarioUbicacionList() { List ubicacionActivos = new ArrayList(); - - if(usuarioUbicacionList != null) - for(UsuarioUbicacion ubicacion : usuarioUbicacionList) - if(ubicacion.getActivo()) + + if (usuarioUbicacionList != null) + for (UsuarioUbicacion ubicacion : usuarioUbicacionList) + if (ubicacion.getActivo()) ubicacionActivos.add(ubicacion); - - + return ubicacionActivos; } public void setUsuarioUbicacionList(List usuarioUbicacionList) { this.usuarioUbicacionList = usuarioUbicacionList; - } + } + + public Date getFecContrasena() { + return fecContrasena; + } + + public void setFecContrasena(Date fecContrasena) { + this.fecContrasena = fecContrasena; + } + } diff --git a/src/com/rjconsultores/ventaboletos/service/UsuarioService.java b/src/com/rjconsultores/ventaboletos/service/UsuarioService.java index e6b34a4c4..ac43afd08 100644 --- a/src/com/rjconsultores/ventaboletos/service/UsuarioService.java +++ b/src/com/rjconsultores/ventaboletos/service/UsuarioService.java @@ -16,12 +16,12 @@ import com.rjconsultores.ventaboletos.exception.BusinessException; * @author gleimar */ public interface UsuarioService { - + public List obtenerTodos(); - public Usuario obtenerID(Integer id); + public Usuario obtenerID(Integer id); - public void borrar(Usuario entidad); + public void borrar(Usuario entidad); public List buscarPeloNome(String nome); @@ -32,4 +32,6 @@ public interface UsuarioService { public List buscarPelaCveUsuario(String claveUsuario); public Usuario suscribirActualizar(Usuario entidad, String senha, Perfil perfil) throws BusinessException; + + public Usuario cambiarContrasena(Usuario entidad, String senha) throws BusinessException; } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/service/impl/UsuarioServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/UsuarioServiceImpl.java index e1c3e00ff..8562e66fd 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/UsuarioServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/UsuarioServiceImpl.java @@ -10,6 +10,7 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; +import org.springframework.security.authentication.CredentialsExpiredException; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -34,11 +35,11 @@ import com.rjconsultores.ventaboletos.utilerias.seguridad.ContrasenaUtileria; */ @Service("usuarioService") public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { - + @Autowired - private UsuarioDAO usuarioDAO; + private UsuarioDAO usuarioDAO; @Autowired - private UsuarioPerfilDAO usuarioPerfilDAO; + private UsuarioPerfilDAO usuarioPerfilDAO; public List buscarPeloNome(String nome) { return usuarioDAO.buscarPeloNome(nome); @@ -51,18 +52,18 @@ public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { public Usuario obtenerID(Integer id) { return usuarioDAO.obtenerID(id); } - + @Transactional(rollbackFor = BusinessException.class) @Override - public Usuario suscribirActualizar(Usuario entidad,String senha,Perfil perfil) throws BusinessException { - - //validación duplicado + public Usuario suscribirActualizar(Usuario entidad, String senha, Perfil perfil) throws BusinessException { + + // validación duplicado List lsUsuario = this.buscarPelaCveUsuario(entidad.getClaveUsuario()); boolean podeSalvar = false; if (lsUsuario.isEmpty()) { podeSalvar = true; } else { - if (entidad.getUsuarioId() != null){ + if (entidad.getUsuarioId() != null) { for (Usuario u : lsUsuario) { if (u.getUsuarioId().equals(entidad.getUsuarioId())) { podeSalvar = true; @@ -74,17 +75,17 @@ public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { if (!podeSalvar) { throw new BusinessException("MSG.Registro.Existe"); } - if (senha != null){ - //validación complejidad contrasena - if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()){ + if (senha != null) { + // validación complejidad contrasena + if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) { ContrasenaUtileria.validarContrasenaCompleja(senha); } - - //encriptación contrasena + + // encriptación contrasena entidad.setSenha(ContrasenaUtileria.encriptarContrasena(senha)); } - - //Perfil + + // Perfil UsuarioPerfil up = new UsuarioPerfil(); up.setUsuario(entidad); up.setPerfil(perfil); @@ -101,18 +102,62 @@ public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { List lsUp = new ArrayList(); lsUp.add(up); entidad.setUsuarioPerfilList(lsUp); - - + entidad.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); - if (entidad.getUsuarioId() == null){ + if (entidad.getUsuarioId() == null) { return usuarioDAO.suscribir(entidad); - }else{ + } else { return usuarioDAO.actualizacion(entidad); } } + + @Transactional(rollbackFor = BusinessException.class) + @Override + public Usuario cambiarContrasena(Usuario entidad, String senha) throws BusinessException { + + // validación duplicado + List lsUsuario = this.buscarPelaCveUsuario(entidad.getClaveUsuario()); + boolean podeSalvar = false; + if (lsUsuario.isEmpty()) { + podeSalvar = true; + } else { + if (entidad.getUsuarioId() != null) { + for (Usuario u : lsUsuario) { + if (u.getUsuarioId().equals(entidad.getUsuarioId())) { + podeSalvar = true; + } + } + } + } + + if (!podeSalvar) { + throw new BusinessException("MSG.Registro.Existe"); + } + if (senha != null) { + // validación complejidad contrasena + if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) { + ContrasenaUtileria.validarContrasenaCompleja(senha); + } + + // encriptación contrasena + entidad.setSenha(ContrasenaUtileria.encriptarContrasena(senha)); + } + + entidad.setFecContrasena(Calendar.getInstance().getTime()); + entidad.setUsuariomodifId(entidad.getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + + if (entidad.getUsuarioId() != null) { + return usuarioDAO.actualizacion(entidad); + } else { + throw new BusinessException("MSG.Registro.Existe"); + } + } + @Transactional public void borrar(Usuario entidad) { @@ -132,11 +177,12 @@ public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { } public Usuario buscarPeloNomeSenha(String stUsuario, String senha) { + senha = ContrasenaUtileria.encriptarContrasena(senha); return usuarioDAO.buscarPeloNomeSenha(stUsuario, senha); } @Override - public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException, DataAccessException { + public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException, DataAccessException, CredentialsExpiredException { if (login == null) { throw new UsernameNotFoundException("Usuario não encontrado"); } @@ -146,7 +192,15 @@ public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { throw new UsernameNotFoundException("Usuario não encontrado"); } - return list.get(0); + Usuario user = list.get(0); + + if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) { + if (!user.isCredentialsNonExpired()) { + throw new CredentialsExpiredException("Senha Expirada"); + } + } + + return user; } public List buscarPorEmpleado(Empleado empleado) { diff --git a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java index ed7c4dd70..a96441464 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java @@ -15,6 +15,9 @@ import java.util.logging.Logger; public final class DateUtil { + public static Integer DIA = Integer.valueOf(1000 * 60 * 60 * 24); + public static Integer UM_DIA = Integer.valueOf(1); + /** * No need for an instance */ @@ -532,4 +535,12 @@ public final class DateUtil { return gcalendar.getTime(); } + public static Date somarDias(Date data, int quantidadeDias) { + Integer dias = UM_DIA * quantidadeDias; + Calendar c = Calendar.getInstance(); + c.setTime(data); + c.add(Calendar.DAY_OF_MONTH, dias); + return c.getTime(); + } + } \ No newline at end of file