package br.com.centralit.citcorpore.rh.ajaxForms; import java.util.Collection; 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.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.LoginDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.ad.LDAPUtils; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.UsuarioService; import br.com.centralit.citcorpore.rh.bean.CandidatoDTO; import br.com.centralit.citcorpore.rh.negocio.CandidatoService; import br.com.centralit.citcorpore.util.CitCorporeConstantes; 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.citframework.integracao.PersistenceEngine; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; public class LoginCandidato extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { String logout = request.getParameter("logout"); if(logout!=null && logout.equals("yes")){ request.getSession().setAttribute("CANDIDATO", null); request.getSession().setAttribute("colUploadsGED", null); } if(request.getParameter("metodoAutenticacao") != null) request.setAttribute("metodoAutenticacao", request.getParameter("metodoAutenticacao")); } /** * A demanda original era para atender candidatos internos e externos, sendo que <code>autenticarCandidato()</code> * tinha o prop�sito original de autenticar o candidato externo atrav�s de um m�todo espec�fico e o colaborador, * que � considerado uma candidato interno, pelo m�todo padr�o de autencica��o que estiver definido no Citsmart, * que pode ou n�o utilizar o Active Directory (AD). * * @param document * @param request * @param response * @throws Exception */ @SuppressWarnings("unchecked") public void autenticarCandidato(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ CandidatoDTO candidatoDTO = (CandidatoDTO)document.getBean(); CandidatoService candidatoService = (CandidatoService) ServiceLocator.getInstance().getService(CandidatoService.class, null); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); String metodoAutenticacao = candidatoDTO.getMetodoAutenticacao(); String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA"); if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) { algoritmo = "SHA-1"; } if (metodoAutenticacao != null && metodoAutenticacao.equalsIgnoreCase("AD")) { LoginDTO loginDTO = new LoginDTO(); String user = (request.getParameter("user")).trim(); String senha = candidatoDTO.getSenha(); loginDTO.setLogin(user); loginDTO.setUser(user); loginDTO.setSenha(senha); UsuarioDTO usuarioDTO = null; String metodoAutenticacaoParametro = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.METODO_AUTENTICACAO_Pasta, "1"); // Verifica se esta configurado o LDAP no sistema if(metodoAutenticacaoParametro != null && metodoAutenticacaoParametro.trim().equalsIgnoreCase("2")) { usuarioService.sincronizaUsuarioAD(LDAPUtils.autenticacaoAD(loginDTO.getUser(), loginDTO.getSenha()), loginDTO, false); } loginDTO.setSenha(CriptoUtils.generateHash(senha, algoritmo)); usuarioDTO = usuarioService.restoreByLogin(loginDTO.getUser(), loginDTO.getSenha()); if(usuarioDTO == null) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.nao_confere")); return ; } if (metodoAutenticacaoParametro == null || metodoAutenticacaoParametro.trim().equalsIgnoreCase("")) { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.metodoAutenticaoNaoConfigurado")); return; } if (usuarioDTO.getStatus().equalsIgnoreCase("A") && loginDTO.getSenha().equals(usuarioDTO.getSenha())) { EmpregadoDTO empregadoDTO = empregadoService.restoreByIdEmpregado(usuarioDTO.getIdEmpregado()); if(empregadoDTO != null) { candidatoDTO = candidatoService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); // utilizado para log PersistenceEngine.setUsuarioSessao(usuarioDTO); if(candidatoDTO != null) { // Se existe o Candidato, Configura a sess�o candidatoDTO.setMetodoAutenticacao("AD"); request.getSession(true).setAttribute("CANDIDATO",candidatoDTO); document.executeScript("window.location = '" +CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath()+"/pages/templateCurriculoTrabalheConosco/templateCurriculoTrabalheConosco.load';"); } else { // Se n�o existe, cria um novo candidato a partir dos dados do Empregado CandidatoDTO candidatoDTONovo = new CandidatoDTO(); candidatoDTONovo.setNome(empregadoDTO.getNome()); candidatoDTONovo.setEmail(empregadoDTO.getEmail()); candidatoDTONovo.setSenha(CriptoUtils.generateHash(senha, algoritmo)); candidatoDTONovo.setCpf(empregadoDTO.getCpf()); candidatoDTONovo.setSenha(usuarioDTO.getSenha()); candidatoDTONovo.setDataInicio(UtilDatas.getDataAtual()); candidatoDTONovo.setSituacao("C"); candidatoDTONovo.setTipo("C"); candidatoDTONovo.setAutenticado("S"); candidatoDTONovo.setIdEmpregado(empregadoDTO.getIdEmpregado()); candidatoDTO = (CandidatoDTO)candidatoService.create(candidatoDTONovo); candidatoDTO.setMetodoAutenticacao("AD"); request.getSession(true).setAttribute("CANDIDATO",candidatoDTO); document.executeScript("window.location = '" +CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath()+"/pages/templateCurriculoTrabalheConosco/templateCurriculoTrabalheConosco.load';"); } } else { document.executeScript("fechar_aguarde()"); document.alert("Ocorreu um erro ao carregar os dados do candidato!\nEntre em contato com o suporte!"); return ; } } else { document.executeScript("fechar_aguarde();"); document.alert(UtilI18N.internacionaliza(request, "login.nao_confere")); request.getSession().invalidate(); return; } } else { boolean candidatoAutenticado = false, candidatoEmpregado = false; candidatoDTO.setSenha(CriptoUtils.generateHash(candidatoDTO.getSenha(), algoritmo)); Collection<CandidatoDTO>candidatosCadastrados = candidatoService.findByCpf(candidatoDTO.getCpf()); if(candidatosCadastrados!= null){ for(CandidatoDTO candidatoaux : candidatosCadastrados){ // Verifica se � um empregado tentando acessar com o CPF if(candidatoaux.getIdEmpregado() != null) { candidatoEmpregado = true; } if(candidatoaux.getAutenticado()!= null && candidatoaux.getAutenticado().equalsIgnoreCase("N")){ document.alert(UtilI18N.internacionaliza(request,"candidato.usarioNaoAutenticado")); document.executeScript("fechar_aguarde()"); return; } if(candidatoaux.getSenha().equals(candidatoDTO.getSenha())){ candidatoAutenticado = true; } } if(candidatoAutenticado){ candidatoDTO = candidatoService.restoreByCpf(candidatoDTO.getCpf()); // Se for um candidato tentando acessar com o CPF, configura o metodo de autenticacao como AD if(candidatoEmpregado) { candidatoDTO.setMetodoAutenticacao("AD"); } request.getSession(true).setAttribute("CANDIDATO",candidatoDTO); document.executeScript("window.location = '" +CitCorporeConstantes.CAMINHO_SERVIDOR + request.getContextPath()+"/pages/trabalheConosco/trabalheConosco.load'; "); } else{ document.alert(UtilI18N.internacionaliza(request, "candidato.senhaInvalida")); } document.executeScript("fechar_aguarde()"); } else { document.executeScript("fechar_aguarde()"); document.alert(UtilI18N.internacionaliza(request, "candidato.nenhumaContaEncontrada")); } } } @SuppressWarnings("rawtypes") @Override public Class getBeanClass() { // TODO Auto-generated method stub return CandidatoDTO.class; } }