Exemplo n.º 1
0
        private void btn_iniciar_MouseDown(object sender, MouseButtonEventArgs e)
        {
            try
            {
                lnLogin.VerificarExistenciaDeUsuarioAdmin();
                usuario = lnLogin.ValidarAcceso(txt_usuario.Text.Trim(), txt_contraseña.Text.Trim());

                if (usuario != null)
                {
                    if (ModoBloqueo)
                    {
                        if (UsuarioBloqueo.Cuenta.Equals(usuario.Cuenta) && UsuarioBloqueo.Contrasena.Equals(HerramientasWindow.EncriptarConAES(txt_contraseña.Text)))
                        {
                            p.ReiniciarAutobloqueo();
                        }
                        else
                        {
                            HerramientasWindow.Mensaje("Verificar datos de acceso para el usuario que bloqueó el sistema.", "Verificar datos");
                            AgregarLoginFallido();
                            txt_contraseña.Text = "";
                            return;
                        }
                    }

                    if (usuario.Contrasena != null && !usuario.Contrasena.Equals(HerramientasWindow.EncriptarConAES(txt_contraseña.Text)))
                    {
                        MostrarMensaje();//HerramientasWindow.Mensaje("Usuario o contraseña invalidos.", "Verificar datos");
                        AgregarLoginFallido();
                        txt_contraseña.Text = "";
                        return;
                    }

                    if (datosSistema != null && datosSistema.BUsarProteccionDeCuentasEnLogin && !ModoBloqueo && usuario.BEstaConectadoAlSistema)
                    {
                        if (usuario.EsAdministradorDeSistema || (usuario.RolSistema != null && usuario.RolSistema.EsAdministradorDeSistema))
                        {
                            usuario.SMensajeDeIntentoDeConexionEnOtroEquipo = "Se realizó una conexión desde el equipo '" + Environment.MachineName + "' con tu usuario y contraseña correctos, esta conexión se cerrará.";
                            usuario.EsModificado = true;
                            manejador.Guardar(usuario);
                            HerramientasWindow.Mensaje("Se detectó que la cuenta estaba iniciada en otro equipo. Se iniciará la conexión en cuanto se haya finalizado la sesión encontrada despues de dar clic en aceptar. \nContinuar...", "Cuenta iniciada previamente");


                            while (true)
                            {
                                usuario = manejador.Cargar <_sis_Usuario>(_sis_Usuario.consultaPorID, new List <Object>()
                                {
                                    usuario.Id
                                });
                                if (usuario.SMensajeDeIntentoDeConexionEnOtroEquipo != null && !usuario.SMensajeDeIntentoDeConexionEnOtroEquipo.Equals(""))
                                {
                                    //HerramientasWindow.Mensaje("Aún no se ha cerrado la conexión en el otro equipo, por favor vuelva a intentar.", "Cuenta iniciada previamente");
                                    Thread.Sleep(500);
                                }
                                else
                                {
                                    break;
                                }
                            }

                            //return;
                        }
                        else
                        {
                            usuario.SMensajeDeIntentoDeConexionEnOtroEquipo = "Se intentó una conexión desde el equipo '" + Environment.MachineName + "' con tu usuario y contraseña correctos, verificar conexión.";
                            usuario.EsModificado = true;
                            manejador.Guardar(usuario);
                            HerramientasWindow.Mensaje("Actualmente la cuenta se encuentra iniciada en otro equipo, se ha enviado un mensaje de aviso a la cuenta.", "Cuenta iniciada previamente");
                            return;
                        }
                    }

                    if (!usuario.Cuenta.Equals("administrador") && usuario.BEstaDesactivado)
                    {
                        HerramientasWindow.Mensaje("Actualmente tu cuenta está desactivada, favor de contactar con el administrador de Sistemas.", "Cuenta desactivada");
                        return;
                    }

                    _sis_EquiposRegistrados equipoRegistrado = manejador.Cargar <_sis_EquiposRegistrados>(_sis_EquiposRegistrados.ConsultaPorNombreEquipo, new List <object>()
                    {
                        Environment.MachineName
                    });
                    if (equipoRegistrado != null && equipoRegistrado.BEstaBloqueado && !usuario.EsAdministradorDeSistema)
                    {
                        HerramientasWindow.MensajeAdvertenciaAlta("El equipo actual se encuentra bloqueado, favor de contactar al administrador del Sistema.", "Equipo bloqueado");
                        return;
                    }
                    variablesData.GuardarValorVariable("ultimo_usuario", txt_usuario.Text);
                    variablesData.ActualizarArchivo();

                    accesosFallidos.Clear();
                    if (p == null)
                    {
                        p = new Principal(usuario, manejadorPrincipal);
                        p.seCerroSistema += p_seCerroSistema;
                    }

                    Hide();
                    ActualizarEquipoRegistrado();
                    //Thread actualizarEquipoRegistrado = new Thread(ActualizarEquipoRegistrado);
                    //actualizarEquipoRegistrado.Start();

                    usuario.BEstaConectadoAlSistema = true;
                    usuario.EsModificado            = true;
                    manejador.Guardar(usuario);

                    p.Show();
                    cargarCaracteristicasVisualesDeServidor();
                }
                else
                {
                    //MostrarMensaje();
                    AgregarLoginFallido();
                    txt_contraseña.Text = "";
                    if (conteoRegistrosLimite > 2)
                    {
                        HerramientasWindow.MensajeAdvertenciaAlta("El equipo se bloqueará, favor de contactar al administrador.", "Equipo bloqueado");
                    }
                }
            }
            catch (Exception ex)
            {
                HerramientasWindow.MensajeError(ex, "Error: " + ex.Message, "Error");
            }
        }