private void btnIniciarSesion_Click(object sender, EventArgs e) { bool formularioValido = ValidarFormulario(); if (!formularioValido) { return; } string nombre = txtUsuario.Text.Trim(); UsuarioBe usuario = usuarioBl.ObtenerUsuarioPorNombre(nombre); if (usuario == null) { lblErrorUsuario.Text = "Usuario no existe"; return; } string contraseña = txtContraseña.Text; bool contraseñaValida = Seguridad.CompareMD5(contraseña, usuario.Contraseña); if (!contraseñaValida) { lblErrorContraseña.Text = "Contraseña incorrecta"; return; } FrmMain frmMain = new FrmMain(usuario); frmMain.Show(); Close(); }
public HttpResponseMessage AutenticarUsuario(string ruc, string usuario, string contraseña) { if (string.IsNullOrEmpty((ruc ?? "").Trim())) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent("El ruc está vacío."); return(msg); } if (string.IsNullOrEmpty((usuario ?? "").Trim())) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent("El usuario está vacío."); return(msg); } if (string.IsNullOrEmpty((contraseña ?? "").Trim())) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent("La contraseña está vacía."); return(msg); } var empresa = empresaBl.ObtenerEmpresaPorRuc(ruc); if (empresa == null) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent($"El ruc {ruc} no se encuentra registrado."); return(msg); } var user = usuarioBl.ObtenerUsuarioPorNombre(usuario, empresa.EmpresaId, loadListaPerfil: true, LoadListaSede: true); if (user == null) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent($"El usuario {usuario} no se encuentra registrado."); return(msg); } else { if (user.PersonalId.HasValue) { user.Personal = personalBl.ObtenerPersonal(empresa.EmpresaId, user.PersonalId.Value); } } if (user.ListaPerfil == null) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent($"El usuario {usuario} no tiene ningún perfil asignado."); return(msg); } if (user.ListaSede == null) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent($"El usuario {usuario} no tiene ninguna sede asignada."); return(msg); } bool isCredentialValid = Seguridad.CompareMD5(contraseña, user.Contrasena); if (isCredentialValid) { var token = TokenGenerator.GenerateTokenJwt(user); var handler = new JwtSecurityTokenHandler(); var payload = handler.ReadJwtToken(token).Payload; var response = new { Token = token, FechaExpiracion = DateTimeOffset.FromUnixTimeSeconds(payload.Exp.Value), Usuario = new { Id = user.UsuarioId, Nombre = user.Nombre, Empresa = new { empresa.EmpresaId, empresa.RazonSocial, empresa.Ruc, empresa.NombreComercial }, Personal = user.Personal, //ListaPerfil = user.ListaPerfil }, PerfilActual = user.ListaPerfil[0], SedeActual = user.ListaSede[0] }; string responseString = JsonConvert.SerializeObject(response); HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); message.Content = new StringContent(responseString); message.Headers.Add("ls.ss", responseString); return(message); } else { return(new HttpResponseMessage(HttpStatusCode.Unauthorized)); } }