package br.com.centralit.citcorpore.ajaxForms; import java.util.Collection; import java.util.List; import java.util.Locale; import java.util.UUID; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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.citcorpore.bean.EmailAlteracaoSenhaDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.InternacionalizarDTO; import br.com.centralit.citcorpore.bean.LoginDTO; 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.integracao.ad.LDAPUtils; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.InstalacaoService; 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.negocio.VersaoService; import br.com.centralit.citcorpore.util.CitCorporeConstantes; import br.com.centralit.citcorpore.util.CriptoUtils; import br.com.centralit.citcorpore.util.Enumerados; 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.dto.IDto; import br.com.citframework.dto.Usuario; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.PersistenceEngine; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.Reflexao; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.XmlReadLookup; @SuppressWarnings({ "rawtypes", "unchecked" }) public class Login extends AjaxFormAction { public Class getBeanClass() { return LoginDTO.class; } public static String recarregaPagina = "S"; public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { InstalacaoService instalacaoService = (InstalacaoService) ServiceLocator.getInstance().getService(InstalacaoService.class, null); if (!instalacaoService.isSucessoInstalacao() && request.getSession().getAttribute("passoInstalacao") == null) { document.executeScript("mostraMensagemInsercao('" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucesso1") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucesso2") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucesso3") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucessoAviso1") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucessoAviso2") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucessoAviso3") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucessoAviso4") + "</label>" + "<label>" + UtilI18N.internacionaliza(request, "instalacao.mensagemInsucessoAvisoManual") + "</label>" + "')"); } HTMLForm form = document.getForm("form"); document.focusInFirstActivateField(form); if (request.getParameter("logout") != null && "yes".equalsIgnoreCase(request.getParameter("logout"))) { request.getSession().setAttribute(Constantes.getValue("USUARIO_SESSAO") + "_CITCORPORE", null); request.getSession().setAttribute("acessosUsuario", null); request.getSession().setAttribute("menu", null); request.getSession().removeAttribute("menuPadrao"); Login.recarregaPagina = "S"; document.executeScript("window.location.href = '" + CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath() + "/pages/login/login.load'"); } // limpa cache das sessoes. ServletContext context = request.getSession().getServletContext(); if (context.getAttribute("instalacao") == null && request.getSession().getAttribute("passoInstalacao") == null && (request.getSession().getAttribute("locale") == null || request.getSession().getAttribute("locale").equals("")) && request.getSession().getAttribute("abrePortal") == null) { request.getSession().invalidate(); } String IDIOMAPADRAO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.IDIOMAPADRAO, ""); if (IDIOMAPADRAO != null && IDIOMAPADRAO.equalsIgnoreCase("EN") && recarregaPagina.equalsIgnoreCase("S")) { WebUtil.setLocale(IDIOMAPADRAO, request); XmlReadLookup.getInstance(new Locale(IDIOMAPADRAO)); recarregaPagina = "N"; } } public void Login_onsave(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { InstalacaoService instalacaoService = (InstalacaoService) ServiceLocator.getInstance().getService(InstalacaoService.class, null); if (!instalacaoService.isSucessoInstalacao() && request.getSession().getAttribute("passoInstalacao") == null) { this.load(document, request, response); document.executeScript("fechar_aguarde();"); return; } LoginDTO login = (LoginDTO) document.getBean(); boolean isAdmin = false; if (login != null) { /** * Motivo: Iners�o da valida��o de login Autor: Fl�vio.santana Data/Hora: 05/11/2013 17:30 */ if (login.getUser() == null || login.getUser().trim().equalsIgnoreCase("")) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.digite_login")); return; } if (login.getSenha() == null || login.getSenha().trim().equalsIgnoreCase("")) { document.alert(UtilI18N.internacionaliza(request, "login.digite_senha")); document.executeScript("fechar_aguarde();"); return; } } else { document.alert(UtilI18N.internacionaliza(request, "login.nao_confere")); document.executeScript("fechar_aguarde();"); return; } UsuarioDTO usrDto = new UsuarioDTO(); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); String metodoAutenticacao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.METODO_AUTENTICACAO_Pasta, "2"); isAdmin = ("admin".equalsIgnoreCase(login.getUser()) || "consultor".equalsIgnoreCase(login.getUser())); if (metodoAutenticacao != null && metodoAutenticacao.trim().equalsIgnoreCase("2")) { if (!isAdmin) { if (request.getSession().getAttribute("passoInstalacao") != null) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "usuario.permissaoInstalacao")); return; } else { usuarioService.sincronizaUsuarioAD(LDAPUtils.autenticacaoAD(login.getUser(), login.getSenha()), login, false); } } } else { System.out.println(UtilI18N.internacionaliza(request, "login.configNaoSincronizarComAD")); } boolean veririficaVazio = usuarioService.listSeVazio(); String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA"); if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) { algoritmo = "SHA-1"; } login.setSenha(CriptoUtils.generateHash(login.getSenha(), algoritmo)); if (!veririficaVazio && "admin".equalsIgnoreCase(login.getUser())) { usrDto.setDataInicio(UtilDatas.getDataAtual()); usrDto.setLogin(login.getUser()); usrDto.setSenha(login.getSenha()); usrDto.setNomeUsuario("Administrador"); usrDto.setStatus("A"); usuarioService.createFirs(usrDto); } UsuarioDTO usuarioBean = usuarioService.restoreByLogin(login.getUser(), login.getSenha()); if (usuarioBean == null) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.nao_confere")); return; } if (metodoAutenticacao == null || metodoAutenticacao.trim().equalsIgnoreCase("")) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.metodoAutenticaoNaoConfigurado")); return; } if (metodoAutenticacao != null) { if (usuarioBean.getStatus().equalsIgnoreCase("A") && login.getSenha().equals(usuarioBean.getSenha())) { if (usuarioBean.getIdEmpresa() == null) { usuarioBean.setIdEmpresa(1); } Usuario usuarioFramework = new Usuario(); UsuarioDTO usr = new UsuarioDTO(); usr.setIdUsuario(usuarioBean.getIdUsuario()); usr.setNomeUsuario(usuarioBean.getNomeUsuario()); usr.setIdGrupo(usuarioBean.getIdGrupo()); usr.setIdEmpresa(usuarioBean.getIdEmpresa()); usr.setIdEmpregado(usuarioBean.getIdEmpregado()); usr.setLogin(usuarioBean.getLogin()); usr.setStatus(usuarioBean.getStatus()); usr.setIdPerfilAcessoUsuario(getIdPerfilAcessoUsuario(usuarioBean.getIdUsuario())); usr.setAcessoCitsmart(getAcessoCitsmart(usr.getIdPerfilAcessoUsuario(), usr.getIdUsuario())); usr.setEmail(usuarioBean.getEmail()); // utilizado para log PersistenceEngine.setUsuarioSessao(usuarioBean); Reflexao.copyPropertyValues(usr, usuarioFramework); br.com.citframework.util.WebUtil.setUsuario(usuarioFramework, request); GrupoService grupoSegService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); Collection<GrupoDTO> colGrupos = grupoSegService.getGruposByPessoa(usuarioBean.getIdEmpregado()); GrupoDTO grpSeg; String[] grupos = null; if (colGrupos != null) { grupos = new String[colGrupos.size()]; for (int i = 0; i < colGrupos.size(); i++) { grpSeg = (GrupoDTO) ((List) colGrupos).get(i); grupos[i] = grpSeg.getSigla(); } } else { grupos = new String[1]; grupos[0] = ""; } usr.setGrupos(grupos); usr.setColGrupos(colGrupos); WebUtil.setUsuario(usr, request); if (usr != null) { Problema problema = new Problema(); problema.notificarPrazoSolucionarProblemaExpirou(document, request, response, usr); } // Verifica��o de instala��o String sessao = (String) request.getSession().getAttribute("passoInstalacao"); if (sessao != null) { document.executeScript("window.location = '" + CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath() + "/pages/start/start.load';"); } else { VersaoService versaoService = (VersaoService) ServiceLocator.getInstance().getService(VersaoService.class, null); String idPerfilAcessoAdministrador = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_PERFIL_ACESSO_ADMINISTRADOR, "1"); boolean usuarioTemPerfilDeAdministrador = usr.getIdPerfilAcessoUsuario() != null && usr.getIdPerfilAcessoUsuario().toString().trim().equals(idPerfilAcessoAdministrador.trim()); if (versaoService.haVersoesSemValidacao() && !usuarioTemPerfilDeAdministrador) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.citsmartAtualizado")); return; } document.executeScript("logar()"); } /** * Caso tenha ficado alguma carga de menu no session, remove a refer�ncia para peg�-la novamente ao carregar o menu * * @author thyen.chang * @since 12/02/2015 */ if(request.getSession(true).getAttribute("menuPadrao") != null){ request.getSession(true).removeAttribute("menuPadrao"); } /* * Desenvolvedor: Thiago Matias - Data: 05/11/2013 - Hor�rio: 16:00 - ID Citsmart: 123357 - Motivo/Coment�rio: redirecionando para o portal quando o parametro do mesmo estiver * habilitado. */ String abrePortal = (String)request.getSession().getAttribute("abrePortal"); String parametroPortal = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.LOGIN_PORTAL, "N"); if (parametroPortal.equalsIgnoreCase("S")) { document.executeScript("window.location = '" + CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath() + "/pages/portal/portal.load';"); } else if(abrePortal!= null && abrePortal.equalsIgnoreCase("S")){ document.executeScript("window.location = '" + CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath() + "/pages/portal/portal.load';"); request.getSession().setAttribute("abrePortal", null); } } else { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.nao_confere")); request.getSession().invalidate(); return; } } } /** * Adicionado tratamento para quando usu�rio n�o possui perfil de acesso * 30/12/2014 - 10:18 * @author thyen.chang * @param idPerfilAcessoUsuario * @param idUsuario * @return * @throws ServiceException * @throws Exception */ private String getAcessoCitsmart(Integer idPerfilAcessoUsuario, Integer idUsuario) throws ServiceException, Exception{ PerfilAcessoService perfilAcessoService = (PerfilAcessoService) ServiceLocator.getInstance().getService(PerfilAcessoService.class, null); PerfilAcessoDTO perfilAcessoDTO = new PerfilAcessoDTO(); perfilAcessoDTO.setIdPerfilAcesso(idPerfilAcessoUsuario); perfilAcessoDTO = perfilAcessoService.findByIdPerfilAcesso(perfilAcessoDTO); if(perfilAcessoDTO != null && perfilAcessoDTO.getAcessoSistemaCitsmart() != null && !perfilAcessoDTO.getAcessoSistemaCitsmart().isEmpty() && perfilAcessoDTO.getAcessoSistemaCitsmart().equals("S")) return perfilAcessoDTO.getAcessoSistemaCitsmart(); else return perfilAcessoService.getAcessoCitsmartByUsuario(idUsuario); } private Integer getIdPerfilAcessoUsuario(Integer idUsuario) throws ServiceException, Exception { PerfilAcessoUsuarioService perfilAcessoService = (PerfilAcessoUsuarioService) ServiceLocator.getInstance().getService(PerfilAcessoUsuarioService.class, null); PerfilAcessoUsuarioDTO perfilAcessoDTO = new PerfilAcessoUsuarioDTO(); perfilAcessoDTO.setIdUsuario(idUsuario); perfilAcessoDTO = perfilAcessoService.listByIdUsuario(perfilAcessoDTO); if (perfilAcessoDTO == null) { return null; } else { return perfilAcessoDTO.getIdPerfilAcesso(); } } public void redefinirSenha(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { // Obtendo o login ou e-mail informado na popup de recupera��o de senha. LoginDTO loginDTO = (LoginDTO) document.getBean(); if (loginDTO != null) { // Obtendo servi�os para consultar informa��es de usu�rio e // empregado. UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); try { if (usuarioService != null) { UsuarioDTO usuarioDTO = null; EmpregadoDTO empregadoDTO = null; // Verificando se foi informado um valor. if (loginDTO.getLogin() != null) { if (loginDTO.getLogin().trim().equals("")) { document.alert(UtilI18N.internacionaliza(request, "login.necessarioInformarEmailOuLogin")); document.executeScript("$('#login').focus()"); return; } // Verificando se o valor informado � um e-mail. if (loginDTO.getLogin().matches("\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b")) { // Obtendo o empregado a partir o e-mail. empregadoDTO = empregadoService.restoreByEmail(loginDTO.getLogin()); usuarioDTO = usuarioService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); } else { // caso n�o seja, assume que � login. // Restaurando o usu�rio atrav�s do login. usuarioDTO = usuarioService.restoreByLogin(loginDTO.getLogin()); empregadoDTO = empregadoService.restoreByEmail(String.format("%s@%s", loginDTO.getLogin(), "centralit.com.br")); // Obtendo o empregado. empregadoDTO = empregadoService.restoreEmpregadosAtivosById(empregadoDTO.getIdEmpregado()); } if (empregadoDTO.getIdEmpregado() != null && empregadoDTO.getIdEmpregado() > 0) { String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA"); if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) { algoritmo = "SHA-1"; } EmailAlteracaoSenhaDTO emailAlteracaoSenhaDTO = new EmailAlteracaoSenhaDTO(); emailAlteracaoSenhaDTO.setLogin(usuarioDTO.getLogin()); emailAlteracaoSenhaDTO.setNomeEmpregado(empregadoDTO.getNome()); UUID uuid = UUID.randomUUID(); String novaSenha = uuid.toString(); novaSenha = novaSenha.replaceAll("-", ""); novaSenha = novaSenha.substring(0, 7); emailAlteracaoSenhaDTO.setNovaSenha(novaSenha); usuarioDTO.setSenha(CriptoUtils.generateHash(novaSenha, algoritmo)); usuarioService.updateNotNull(usuarioDTO); emailAlteracaoSenhaDTO.setLink(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.URL_Sistema, "33")); String ID_MODELO_EMAIL_ALTERACAO_SENHA = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_ALTERACAO_SENHA, "18"); MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ID_MODELO_EMAIL_ALTERACAO_SENHA.trim()), new IDto[] { emailAlteracaoSenhaDTO }); mensagem.envia(empregadoDTO.getEmail(), "", ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, "10")); document.alert(String.format(UtilI18N.internacionaliza(request, "login.alteracaoSenha.notificacaoEnvioEmail"), empregadoDTO.getNome(), empregadoDTO.getEmail())); } } } } catch (Exception e) { document.alert(UtilI18N.internacionaliza(request, "login.alteracaoSenha.cancelamento")); e.printStackTrace(); } } } public void internacionaliza(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { InternacionalizarDTO bean = (InternacionalizarDTO) document.getBean(); String IDIOMAPADRAO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.IDIOMAPADRAO, " "); if (IDIOMAPADRAO == null) { IDIOMAPADRAO = ""; } request.getSession(true).setAttribute("menu", null); request.getSession(true).setAttribute("menuPadrao", null); if (bean != null) { if (bean.getLocale() != null) { WebUtil.setLocale(bean.getLocale().trim(), request); XmlReadLookup.getInstance(new Locale(bean.getLocale().trim())); } else { WebUtil.setLocale(IDIOMAPADRAO, request); XmlReadLookup.getInstance(new Locale(IDIOMAPADRAO)); } } else { WebUtil.setLocale(IDIOMAPADRAO, request); XmlReadLookup.getInstance(new Locale(IDIOMAPADRAO)); } document.executeScript("window.location.reload()"); } }