Exemplo n.º 1
0
        private void CargarModulos()
        {
            try
            {
                if (manejadorUsuario == null)
                {
                    manejadorUsuario = new ManejadorDB();
                }
                //usuario.EliminarCache();
                usuario = manejadorUsuario.Cargar <_sis_Usuario>(_sis_Usuario.consultaPorID, new List <Object>()
                {
                    usuario.Id
                });
                if (usuario.RolSistema != null)
                {
                    List <_sis_Contenedor> contenedores = null;
                    //usuario.EliminarCache();
                    usuario.Manejador = manejadorUsuario;
                    try
                    {
                        if (usuario.RolSistema != null)
                        {
                            TimeSpan diferenciaTRol = (DateTime.Now - usuario.RolSistema.DtFechaModificacion);
                            if (menu.NumeroElementos == 0 || (diferenciaTRol.TotalSeconds <= tiempoActualizacionModulos / 1000))
                            {
                                menu.LimpiarElementos();
                                contenedores = usuario.RolSistema.Contenedores;
                                if (contenedores != null)
                                {
                                    foreach (_sis_Contenedor contenedor in contenedores)
                                    {
                                        contenedor.EliminarCache();
                                        menu.AgregarElementoMenu(contenedor);
                                    }
                                }
                                menu.DibujarElementos(menu.ActualWidth);
                                //---
                                if (usuario.RolSistema != null)
                                {
                                    rolstr = usuario.RolSistema.Nombre;
                                }
                                Title = nombreSistema + " [versión " + versionActual + "] - Usuario: " + usuario.Cuenta + " - Rol: " + rolstr;
                                if (!primeraVez)
                                {
                                    HerramientasWindow.MostrarNotificacion("Se cargo su perfil y los accesos al sistema.", "Perfil cargado");
                                }
                                else
                                {
                                    primeraVez = false;
                                }
                            }
                            else
                            {
                                usuario.RestaurarUltimaCache();
                            }
                        }
                        if (usuario.ContenedorEspecial != null)
                        {
                            TimeSpan diferenciaTContenedorEspecial = (DateTime.Now - usuario.ContenedorEspecial.DtFechaModificacion);
                            if ((diferenciaTContenedorEspecial.TotalSeconds <= tiempoActualizacionModulos / 1000))
                            {
                                menu.EliminarOpcionesEspeciales();
                                if (usuario.ContenedorEspecial != null)
                                {
                                    if (usuario.ContenedorEspecial.FormulariosPermisos != null && usuario.ContenedorEspecial.FormulariosPermisos.Count > 0)
                                    {
                                        usuario.ContenedorEspecial.ImagenAsociada        = new _sis_ImagenAsociada();
                                        usuario.ContenedorEspecial.ImagenAsociada.Imagen = new Bitmap(@"Imagenes\Iconos\Sistema\carpeta_especial.png");
                                        menu.AgregarElementoMenu(usuario.ContenedorEspecial);
                                    }
                                }
                                menu.DibujarElementos(menu.ActualWidth);
                                Title = nombreSistema + " [versión " + versionActual + "] - Usuario: " + usuario.Cuenta + " - Rol: " + rolstr;
                                HerramientasWindow.MostrarNotificacion("Se cargo su perfil y los accesos al sistema.", "Perfil cargado");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
                else if (!usuario.EsAdministradorDeSistema)
                {
                    menu.LimpiarElementos();
                    HerramientasWindow.MensajeAdvertencia("Actualmente no tiene asignado un Rol. Favor de contactar al administrador del Sistema para la asignación de un Rol.", "Información");
                }
                else
                {
                    menu.LimpiarElementos();
                }

                if (usuario.SMensajeDeIntentoDeConexionEnOtroEquipo != null && !usuario.SMensajeDeIntentoDeConexionEnOtroEquipo.Equals(""))
                {
                    if (usuario.EsAdministradorDeSistema || (usuario.RolSistema != null && usuario.RolSistema.EsAdministradorDeSistema))
                    {
                        //Dispatcher.Invoke(new Action(() =>
                        //{
                        //    HerramientasWindow.MensajeInformacion(usuario.SMensajeDeIntentoDeConexionEnOtroEquipo, "Atención!");
                        //}));
                        if (!detectoEntradaOtroLado)
                        {
                            detectoEntradaOtroLado = true;
                            DelegadoCerradoOtroLogueo delegadoParaCerrar = CerrarSistemaPorOtroLogueo;
                            HerramientasWindow.MostrarNotificacion(usuario.SMensajeDeIntentoDeConexionEnOtroEquipo, "Atención!", new Bitmap(@"Imagenes\Iconos\Sistema\Dialogos\advertencia3.png"), delegadoParaCerrar, 5);
                        }
                    }
                    else
                    {
                        HerramientasWindow.MostrarNotificacion(usuario.SMensajeDeIntentoDeConexionEnOtroEquipo, "Detección de intento de acceso", new Bitmap(@"Imagenes\Iconos\Sistema\Dialogos\advertencia3.png"), 0);
                        usuario.SMensajeDeIntentoDeConexionEnOtroEquipo = "";
                        usuario.EsModificado = true;
                        manejador.GuardarAsincrono("", usuario);
                    }
                }
            }
            catch (Exception ex)
            {
                Dispatcher.Invoke(new Action(() =>
                {
                    HerramientasWindow.MensajeError(ex, ex.Message, "Error al cargar modulos de usuario.");
                }));
            }
        }
Exemplo n.º 2
0
        private void AgregarLoginFallido()
        {
            try
            {
                _sis_AccesoFallido acceso = manejador.CrearObjeto <_sis_AccesoFallido>();
                acceso.SIPEquipo             = ipLocal;
                acceso.SIpInternet           = ipInternet;
                acceso.SNombreEquipo         = Environment.MachineName;
                acceso.SUsuarioWindows       = Environment.UserName;
                acceso.SUsuarioRegistrado    = txt_usuario.Text;
                acceso.SContrasenaRegistrada = txt_contraseña.Text;
                acceso.EsModificado          = true;
                manejador.Guardar(acceso);

                accesosFallidos.Add(acceso);

                if (accesosFallidos.Count > 2)
                {
                    Bitmap fotoUsuario = HerramientasWindow.ObtenerFotoDeWebCam();
                    _sis_LimiteAccesosFallidosAlcanzado limite = manejador.CrearObjeto <_sis_LimiteAccesosFallidosAlcanzado>();

                    limite.AccesosFallidos           = accesosFallidos;
                    limite.FotoPantalla              = manejador.CrearObjeto <_sis_ImagenAsociada>();
                    limite.FotoPantalla.EsModificado = true;
                    limite.FotoPantalla.Imagen       = HerramientasWindow.ComprimirImagen(HerramientasWindow.ObtenerFotoPantalla(this), 1000, 600, System.Drawing.Imaging.ImageFormat.Jpeg);
                    limite.FotoWebCam = manejador.CrearObjeto <_sis_ImagenAsociada>();
                    limite.FotoWebCam.EsModificado = true;
                    limite.FotoWebCam.Imagen       = HerramientasWindow.ComprimirImagen(fotoUsuario, 600, 400, System.Drawing.Imaging.ImageFormat.Jpeg);
                    limite.EsModificado            = true;
                    Bitmap emailFotoPantalla = limite.FotoPantalla.Imagen;
                    Bitmap emailFotoWebcam   = limite.FotoWebCam.Imagen;
                    manejador.Guardar(limite);
                    accesosFallidos.Clear();

                    List <_sis_Usuario> usuariosAdmins = manejador.CargarLista <_sis_Usuario>(_sis_Usuario.consultaPorUsuariosAdministradores);
                    String emails = "";
                    foreach (_sis_Usuario us in usuariosAdmins)
                    {
                        if (!us.SEmail.Trim().Equals(""))
                        {
                            emails += us.SEmail + "; ";
                        }
                    }
                    if (!emails.Trim().Equals(""))
                    {
                        emails = emails.Substring(0, emails.Length - 2);
                    }
                    if (!emails.Trim().Equals(""))
                    {
                        String detallesTecnicos = @"<p><strong>Detalles t&eacute;cnicos:</strong></p>

                    <ul>
	                    <li>IP(LAN|WAN): "     + ipLocal + "|" + ipInternet + @"</li>
	                    <li>Nombre equipo: "     + acceso.SNombreEquipo + @"</li>
	                    <li>Hora del evento: "     + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"</li>
	                    <li>Sesión Windows: "     + acceso.SUsuarioWindows + @"</li>
                        <li>Usuario registrado: " + acceso.SUsuarioRegistrado + @"</li>
                    </ul>";

                        String  mensaje = @"
                    <h2><strong>Detecci&oacute;n de intruso en el sistema.</strong></h2>

                    <blockquote>
                    <p><em>Verificar archivos adjuntos.</em></p>
                    </blockquote>
                    ";
                        Adjunto adj1    = null;
                        Adjunto adj2    = null;
                        if (emailFotoPantalla != null)
                        {
                            adj1 = new Adjunto();
                            adj1.NombreArchivo = "fotoPantalla.jpg";
                            adj1.Stream        = Herramientas.WPF.Utilidades.BitmapToStream(emailFotoPantalla);
                        }
                        if (emailFotoWebcam != null)
                        {
                            adj2 = new Adjunto();
                            adj2.NombreArchivo = "fotoWebcam.jpg";
                            adj2.Stream        = Herramientas.WPF.Utilidades.BitmapToStream(emailFotoWebcam);
                        }
                        List <Adjunto> adjuntos = new List <Adjunto>();
                        adjuntos.Add(adj1);
                        adjuntos.Add(adj2);
                        try
                        {
                            EmailFormatos.EnviarMailAtencion(mensaje, "Intento de acceso no permitido detectado", detallesTecnicos, null, emails, adjuntos);
                        }
                        catch { }
                    }
                    fotoUsuario = null;
                    conteoRegistrosLimite++;

                    if (conteoRegistrosLimite == 2)
                    {
                        _sis_EquiposRegistrados equipoRegistrado = manejador.Cargar <_sis_EquiposRegistrados>(_sis_EquiposRegistrados.ConsultaPorNombreEquipo, new List <object>()
                        {
                            Environment.MachineName
                        });
                        if (equipoRegistrado == null)
                        {
                            equipoRegistrado = manejador.CrearObjeto <_sis_EquiposRegistrados>();
                        }

                        equipoRegistrado.SNombreEquipo         = Environment.MachineName;
                        equipoRegistrado.SUltimaIPConexion     = ipLocal;
                        equipoRegistrado.UltimoUsuarioConexion = usuario;
                        equipoRegistrado.BEstaBloqueado        = true;
                        equipoRegistrado.BEstaConectado        = false;
                        equipoRegistrado.EsModificado          = true;
                        manejador.Guardar(equipoRegistrado);
                        HerramientasWindow.MensajeAdvertencia("Por seguridad se ha bloqueado el equipo. Favor de contactar al administrador del Sistema.", "Bloqueo de seguridad");
                    }
                }
            }
            catch (Exception ex)
            {
                HerramientasWindow.MensajeError(ex, "Error: " + ex.Message, "Error");
            }
        }