From 720f870262821efb1883292be00de5398b9c6e86 Mon Sep 17 00:00:00 2001 From: wilian Date: Mon, 28 Sep 2015 21:20:53 +0000 Subject: [PATCH] fixes bug #6660 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@48353 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/constantes/Constantes.java | 2 + .../ventaboletos/entidad/Usuario.java | 18 ++++++++ .../ventaboletos/utilerias/UsuarioLogado.java | 46 ++++++++++++++++++- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/constantes/Constantes.java b/src/com/rjconsultores/ventaboletos/constantes/Constantes.java index beb1f4224..0ccd1428b 100644 --- a/src/com/rjconsultores/ventaboletos/constantes/Constantes.java +++ b/src/com/rjconsultores/ventaboletos/constantes/Constantes.java @@ -9,5 +9,7 @@ public class Constantes { public static final Long MVO_CANCEL_CANCELACION = new Long(31); public static final Long MVO_CANCEL_DEVOLUCAO = new Long(32); + + public static String CLAVE_EDITAR_COMISSAO = "COM.RJCONSULTORES.ADMINISTRACION.PUNTOVENTA.EDITARCOMISSAO"; } diff --git a/src/com/rjconsultores/ventaboletos/entidad/Usuario.java b/src/com/rjconsultores/ventaboletos/entidad/Usuario.java index 8c354eada..f54d32b0a 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Usuario.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Usuario.java @@ -26,6 +26,7 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; import org.apache.commons.lang.StringUtils; import org.hibernate.annotations.Fetch; @@ -92,6 +93,10 @@ public class Usuario implements Serializable, Authentication, UserDetails { @Column(name = "FECCONTRASENA") @Temporal(TemporalType.TIMESTAMP) private Date fecContrasena; + + /* Lista de permissoes do usuario */ + @Transient + private List listClavesPermisos; public String getClaveUsuario() { return claveUsuario; @@ -369,4 +374,17 @@ public class Usuario implements Serializable, Authentication, UserDetails { return sNome.toString(); } + public List getListClavesPermisos() { + return listClavesPermisos; + } + + public void setListClavesPermisos(List listClavesPermisos) { + this.listClavesPermisos = listClavesPermisos; + } + + @Transient + public boolean isPermisoClave(String clave) { + return listClavesPermisos != null && listClavesPermisos.contains(clave); + } + } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/UsuarioLogado.java b/src/com/rjconsultores/ventaboletos/utilerias/UsuarioLogado.java index d2f1a130c..bd10bd4ea 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/UsuarioLogado.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/UsuarioLogado.java @@ -4,17 +4,29 @@ */ package com.rjconsultores.ventaboletos.utilerias; -import com.rjconsultores.ventaboletos.entidad.Usuario; +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; +import org.springframework.context.ApplicationContext; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.context.ContextLoaderListener; + +import com.rjconsultores.ventaboletos.dao.UsuarioPerfilDAO; +import com.rjconsultores.ventaboletos.entidad.PerfilFuncion; +import com.rjconsultores.ventaboletos.entidad.Usuario; +import com.rjconsultores.ventaboletos.entidad.UsuarioPerfil; /** * * @author rodrigo */ public class UsuarioLogado { - + + private static Logger log = Logger.getLogger(UsuarioLogado.class); + public static Usuario getUsuarioLogado() { Usuario usuario = null; SecurityContext sc = SecurityContextHolder.getContext(); @@ -23,6 +35,10 @@ public class UsuarioLogado { if ((authentication != null) && (authentication.getPrincipal() instanceof Usuario)) { usuario = (Usuario) authentication.getPrincipal(); + + if(usuario.getListClavesPermisos() == null) { + cargaPermisoClave(usuario); + } } else { usuario = null; } @@ -30,4 +46,30 @@ public class UsuarioLogado { return usuario; } + + private static void cargaPermisoClave(Usuario usuario) { + try { + if(usuario != null && usuario.getListClavesPermisos() == null || usuario.getListClavesPermisos().isEmpty()) { + ApplicationContext context = ContextLoaderListener.getCurrentWebApplicationContext(); + + if(context != null) { + + UsuarioPerfilDAO usuarioPerfilDAO = context.getBean(UsuarioPerfilDAO.class); + if(usuarioPerfilDAO != null) { + usuario.setListClavesPermisos(new ArrayList()); + List listUsuarioPerfil = usuarioPerfilDAO.obtenerPorUsuario(usuario); + for (UsuarioPerfil up : listUsuarioPerfil) { + List listPerfilFuncion = up.getPerfil().getPerfilFuncionList(); + for (PerfilFuncion pf : listPerfilFuncion) { + usuario.getListClavesPermisos().add(pf.getFuncionSistema().getDescruta()); + } + } + } + } + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + }