package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citajax.html.HTMLTable; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.PerfilAcessoDTO; import br.com.centralit.citcorpore.bean.PerfilAcessoUsuarioDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.PerfilAcessoService; import br.com.centralit.citcorpore.negocio.PerfilAcessoUsuarioService; import br.com.centralit.citcorpore.negocio.UsuarioService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.CriptoUtils; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilI18N; /** * @author CentralIT * */ @SuppressWarnings({ "rawtypes", "unchecked", "unused" }) public class Usuario extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { CITCorporeUtil.limparFormulario(document); document.focusInFirstActivateField(null); preencherComboPerfilAcessoUsuario(document, request, response); } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuarioDto = (UsuarioDTO) document.getBean(); Collection<GrupoEmpregadoDTO> colGrupo = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(GrupoEmpregadoDTO.class, "colGrupoSerialize", request); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); EmpregadoDTO empregadoBean = new EmpregadoDTO(); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); usuarioDto.setIdUnidade(empregadoBean.getIdUnidade()); usuarioDto.setIdGrupo(empregadoBean.getIdGrupo()); if (colGrupo != null) { usuarioDto.setColGrupoEmpregado(colGrupo); } else { usuarioDto.setColGrupoEmpregado(new ArrayList<GrupoEmpregadoDTO>()); } String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA"); if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) { algoritmo = "SHA-1"; } if (usuarioDto.getIdUsuario() == null || usuarioDto.getIdUsuario() == 0) { usuarioDto.setSenha(CriptoUtils.generateHash(usuarioDto.getSenha(), algoritmo)); UsuarioDTO objStatus = usuarioService.listStatus(usuarioDto); if (objStatus == null) { UsuarioDTO objLogin = usuarioService.listLogin(usuarioDto); if ((objLogin == null)) { usuarioDto.setIdEmpresa(WebUtil.getIdEmpresa(request)); usuarioDto.setStatus("A"); usuarioService.create(usuarioDto); document.alert(UtilI18N.internacionaliza(request, "MSG05")); } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado")); } } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado")); } } else { if (usuarioDto.getSenha() != null && !StringUtils.isBlank(usuarioDto.getSenha())) { usuarioDto.setSenha(CriptoUtils.generateHash(usuarioDto.getSenha(), algoritmo)); } else { usuarioDto.setSenha(null); } if (usuarioDto.getLdap() != null && usuarioDto.getLdap().equalsIgnoreCase("S")) { String metodoAutenticacao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.METODO_AUTENTICACAO_Pasta, "2"); if (metodoAutenticacao != null && metodoAutenticacao.equalsIgnoreCase("2")) { UsuarioDTO usuarioAux = new UsuarioDTO(); usuarioAux.setIdUsuario(usuarioDto.getIdUsuario()); usuarioAux = (UsuarioDTO) usuarioService.restore(usuarioAux); if ((!usuarioAux.getNomeUsuario().equals(usuarioDto.getNomeUsuario())) || (!usuarioAux.getLogin().equals(usuarioDto.getLogin())) || (usuarioDto.getSenha() != null) || (!usuarioAux.getIdEmpregado().equals(usuarioDto.getIdEmpregado()))) { document.alert(UtilI18N.internacionaliza(request, "usuario.mensagensDeAutenticacaoLDAP")); this.restore(document, request, response); return; } } } UsuarioDTO objUsuario = usuarioService.listUsuarioExistente(usuarioDto); if (objUsuario == null) { usuarioService.update(usuarioDto); document.alert(UtilI18N.internacionaliza(request, "MSG06")); } else{ document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado")); } } HTMLForm form = document.getForm("form"); form.clear(); document.executeScript("limpar()"); } /** * @param document * @param request * @param response * @throws Exception * Metodo colocar status Inativo quando for solicitado a exclus�o do usuario. */ public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuarioDto = (UsuarioDTO) document.getBean(); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); if (usuarioDto.getIdUsuario().intValue() > 0) { usuarioService.delete((usuarioDto)); } HTMLForm form = document.getForm("form"); form.clear(); document.alert(UtilI18N.internacionaliza(request, "MSG07")); document.executeScript("limpar()"); } /** * @param document * @param request * @param response * @throws Exception * Metodo para restaura os campos. */ public void restoreEmpregado(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuarioDto = (UsuarioDTO) document.getBean(); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); EmpregadoDTO empregadoBean = new EmpregadoDTO(); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); empregadoBean.setIdEmpregado(usuarioDto.getIdEmpregado()); empregadoBean = (EmpregadoDTO) empregadoService.restore(empregadoBean); usuarioDto.setNomeUsuario(empregadoBean.getNome()); HTMLForm form = document.getForm("form"); form.setValues(usuarioDto); //Preenche os grupos do empregado Collection<GrupoEmpregadoDTO> gruposEmpregado = grupoEmpregadoService.findByIdEmpregadoNome(usuarioDto.getIdEmpregado()); document.executeScript("deleteAllRows()"); if (gruposEmpregado != null) { for (GrupoEmpregadoDTO grupoempregadoDto : gruposEmpregado) { if (grupoempregadoDto != null) { HTMLTable table; table = document.getTableById("tabelaGrupo"); table.addRow(grupoempregadoDto, new String[] { "", "idGrupo", "sigla" }, null, null, new String[] { "gerarButtonDeleteGrupo" }, null, null); } } } document.executeScript("fecharPopup()"); } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuarioDto = (UsuarioDTO) document.getBean(); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); PerfilAcessoUsuarioService perfilAcessoUsuarioService = (PerfilAcessoUsuarioService) ServiceLocator.getInstance().getService(PerfilAcessoUsuarioService.class, null); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); PerfilAcessoUsuarioDTO perfilAcessoUsuarioDto = new PerfilAcessoUsuarioDTO(); Integer idUsuario = null; usuarioDto = (UsuarioDTO) usuarioService.restore(usuarioDto); usuarioDto.setSenha(null); idUsuario = usuarioDto.getIdUsuario(); perfilAcessoUsuarioDto.setIdUsuario(idUsuario); PerfilAcessoUsuarioDTO dadoPerfilAcessoUsuario = perfilAcessoUsuarioService.listByIdUsuario(perfilAcessoUsuarioDto); if ((dadoPerfilAcessoUsuario != null)) { this.preencherComboPerfilAcessoUsuario(document, request, response); usuarioDto.setIdPerfilAcessoUsuario(dadoPerfilAcessoUsuario.getIdPerfilAcesso()); } document.executeScript("deleteAllRows()"); // Collection<GrupoDTO> colGrupo = grupoService.listaGrupoEmpregado(usuarioDto.getIdEmpregado()); if (usuarioDto.getColGrupoEmpregado() != null) { for (GrupoEmpregadoDTO grupoempregadoDto : usuarioDto.getColGrupoEmpregado()) { if (grupoempregadoDto != null) { HTMLTable table; table = document.getTableById("tabelaGrupo"); table.deleteAllRows(); table.addRowsByCollection(usuarioDto.getColGrupoEmpregado(), new String[] { "", "idGrupo", "sigla" }, null, null, new String[] { "gerarButtonDeleteGrupo" }, null, null); } } } if(usuarioDto!= null && usuarioDto.getLdap()!= null && usuarioDto.getLdap().equalsIgnoreCase("S")){ document.executeScript("$('#divSenha').hide();"); document.executeScript("$('#divAlterarSenha').hide();"); }else{ document.executeScript("$('#divAlterarSenha').show();"); } HTMLForm form = document.getForm("form"); form.clear(); form.setValues(usuarioDto); } /** * Preenche a combo PerfilAcesso. * * @param document * @param request * @param response * @throws Exception */ private void preencherComboPerfilAcessoUsuario(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuarioDto = (UsuarioDTO) document.getBean(); PerfilAcessoService perfilAcessoService = (PerfilAcessoService) ServiceLocator.getInstance().getService(PerfilAcessoService.class, null); HTMLSelect comboPerfilAcessoUsuario = document.getSelectById("idPerfilAcessoUsuario"); ArrayList<PerfilAcessoDTO> perfilAcessos = (ArrayList) perfilAcessoService.list(); Integer idUsuario = null; inicializarCombo(comboPerfilAcessoUsuario, request); for (PerfilAcessoDTO perfilAcessoDto : perfilAcessos) { if (perfilAcessoDto.getDataFim() == null) { comboPerfilAcessoUsuario.addOption(perfilAcessoDto.getIdPerfilAcesso().toString(), StringEscapeUtils.escapeJavaScript(perfilAcessoDto.getNomePerfilAcesso())); } } } /** * Iniciliza combo. * * @param componenteCombo */ private void inicializarCombo(HTMLSelect componenteCombo, HttpServletRequest request) { componenteCombo.removeAllOptions(); componenteCombo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); } /** * Usuario logado vai ter a possibilidade de fazer altera��o de sua senha * * @param document * @param request * @param response * @throws Exception */ public void alterarSenha(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuarioDto = (UsuarioDTO) document.getBean(); UsuarioDTO usuario = new UsuarioDTO(); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); usuarioDto.setIdUsuario(WebUtil.getUsuario(request).getIdUsuario()); usuario = (UsuarioDTO) usuarioService.restore(usuarioDto); String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA"); if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) { algoritmo = "SHA-1"; } if (usuarioDto.getIdUsuario() != null && usuarioDto.getIdUsuario() != 0) { usuario.setSenha(CriptoUtils.generateHash(usuarioDto.getSenha(), algoritmo)); usuarioService.updateNotNull(usuario); document.alert(UtilI18N.internacionaliza(request, "MSG06")); } HTMLForm form = document.getForm("form"); form.clear(); } @Override public Class getBeanClass() { return UsuarioDTO.class; } }