public LoginStatus ValidarAutenticacao(SYS_Usuario entityUsuario) { eVerificaTipoAutenticacao validacaoStatus = eVerificaTipoAutenticacao.UsuNaoEncontrado; int indexAD = entityUsuario.usu_login.IndexOf('\\'); if (indexAD <= 0) { validacaoStatus = VerificaTipoAutenticacao(entityUsuario); } else { validacaoStatus = eVerificaTipoAutenticacao.Autenticador; } LoginStatus status = LoginStatus.NaoEncontrado; //VERIFICA O TIPO DE VALIDAÇÃO if (validacaoStatus == eVerificaTipoAutenticacao.Autenticador) { // Checa as credenciais do usuário status = SYS_UsuarioBO.ValidarLogin(entityUsuario); } else if (validacaoStatus == eVerificaTipoAutenticacao.WebService) { eValidacaoWebService ValidacaoStatus = VerificaSenhaUsuarioWebService(entityUsuario); if (ValidacaoStatus == eValidacaoWebService.ValidarNoWebService) { // TEM QUE VERIFICAR QUAL A INTEGRACAO EXTERNA E DIRECIONAR status = ValidaUsuarioWebService(entityUsuario); } else if (ValidacaoStatus == eValidacaoWebService.ValidarComSenhaDoHistorico && (ValidarUsuarioHistoricoSenha(entityUsuario) == LoginStatus.SenhaInvalida)) { status = ValidaUsuarioWebService(entityUsuario); } else if (ValidacaoStatus == eValidacaoWebService.IntegrcacaoNaoEncontrada) { status = LoginStatus.Erro; } } return(status); }
public HttpResponseMessage PostLogin(Usuario usuario) { try { var user = new SYS_Usuario { usu_login = usuario.login, usu_senha = usuario.senha, ent_id = usuario.entidade }; LoginStatus status = SYS_UsuarioBO.ValidarLogin(user); if (status == LoginStatus.Sucesso) { if (SYS_UsuarioBO.GetSelectBy_ent_id_usu_login(user)) { var grupos = SYS_GrupoBO.GetSelectBySis_idAndUsu_id(user.usu_id, ApplicationWEB.SistemaID); if (grupos.Count > 0) { var grupo = grupos.First(); Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("login", user.usu_login); dic.Add("entity", user.ent_id); dic.Add("group", grupo.gru_id); var jwtKey = System.Configuration.ConfigurationManager.AppSettings["jwtKey"]; SymmetricAlgorithm sa = new SymmetricAlgorithm(SymmetricAlgorithm.Tipo.TripleDES); PES_Pessoa entityPessoa = new PES_Pessoa { pes_id = user.pes_id }; PES_PessoaBO.GetEntity(entityPessoa); bool docente = false; if (grupo.vis_id == SysVisaoID.Individual) { // Carrega a entidade docente de acordo com a pessoa do usuário logado. ACA_Docente entityDocente; ACA_DocenteBO.GetSelectBy_Pessoa(user.ent_id, user.pes_id, out entityDocente); docente = entityDocente.doc_id > 0; } UsuarioLogado usuarioLogado = new UsuarioLogado { grupo = grupos.First().gru_nome, nome = (string.IsNullOrEmpty(entityPessoa.pes_nome) ? user.usu_login : entityPessoa.pes_nome), docente = docente, token = JWT.JsonWebToken.Encode(dic, sa.Decrypt(jwtKey), JWT.JwtHashAlgorithm.HS256) }; return(Request.CreateResponse(HttpStatusCode.OK, usuarioLogado)); } else { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário não está vinculado a um grupo")); } } return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário não encontrado")); } else { return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Usuário ou senha inválidos")); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
private void Entrar() { try { // Carrega os dados do usuário necessário para o login SYS_Usuario entityUsuario = new SYS_Usuario { ent_id = new Guid(this.entidade) , usu_login = this.login , usu_senha = this.senha }; // Checa as credenciais do usuário LoginStatus status = SYS_UsuarioBO.ValidarLogin(entityUsuario); var mensagem = ""; switch (status) { case LoginStatus.Erro: { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Erro ao tentar entrar no sistema.", entityUsuario.usu_login); mensagem = "Erro ao tentar entrar no sistema."; retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Erro); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); break; } case LoginStatus.Bloqueado: { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Usuário bloqueado.", entityUsuario.usu_login); mensagem = "Usuário bloqueado."; retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); break; } case LoginStatus.NaoEncontrado: { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Usuário não encontrado.", entityUsuario.usu_login); mensagem = "Usuário e/ou senha inválidos."; retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); break; } case LoginStatus.SenhaInvalida: { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Senha inválida.", entityUsuario.usu_login); mensagem = "Usuário e/ou senha inválidos."; retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); break; } case LoginStatus.Expirado: { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Senha expirada.", entityUsuario.usu_login); mensagem = "Senha expirada."; retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); break; } case LoginStatus.Sucesso: { SignHelper.AutenticarUsuario(entityUsuario); // Configura usuário na Session LoadSession(entityUsuario); ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Login efetuado com sucesso."); if (!string.IsNullOrEmpty(this.urlSistema)) { //Chama o Login.ashx do site cliente. HttpContext.Current.Response.Redirect(this.urlSistema, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } else { retorno.Mensagem = MensagemDeRetorno("sucesso", UtilBO.TipoMensagem.Alerta); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); } break; } } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); retorno.Mensagem = UtilBO.GetErroMessage("Erro ao tentar entrar no sistema.", UtilBO.TipoMensagem.Erro); UtilBO.MessageJSON(HttpContext.Current.Response.Output, retorno); } }