public bool ValidateAs(int userId)
		{
			if(userId == 1) {
				Titulo.Text = "Escriba la contraseña de Administrador";
				if(Explain == null)
					LabelExplain.Text = "La operación que intenta realizar requiere por motivos de seguridad que escriba la contraseña de Administrador.";
				else
					LabelExplain.Text = Explain;
                        } else if (userId != Lbl.Sys.Config.Actual.UsuarioConectado.Id) {
				this.Titulo.Text = "Para continuar, por favor escriba la contraseña del usuario.";
				if(Explain == null)
					this.LabelExplain.Text = "La operación que intenta realizar requiere por motivos de seguridad que escribir la contraseña de un usuario con permiso.";
				else
					LabelExplain.Text = Explain;
			}

                        Lbl.Personas.Usuario Usuario = new Lbl.Personas.Usuario(this.Connection, userId);

			EntradaUsuario.Text = Usuario.Nombre;
			EntradaContrasena.Text = "";
			if(this.ShowDialog() == DialogResult.OK) {
				if(Usuario.ContrasenaValida(EntradaContrasena.Text) == true) {
					return true;
				} else {
					Lui.Forms.MessageBox.Show("La contraseña proporcionada no es correcta.", "Error");
					System.Threading.Thread.Sleep(1000);
					return false;
				}
			} else {
				return false;
			}
		}
示例#2
0
        public override void ActualizarControl()
        {
            Lbl.Personas.Usuario Usu = this.Elemento as Lbl.Personas.Usuario;

            EntradaContrasena.Text    = "";
            EntradaNombreUsuario.Text = Usu.NombreUsuario;

            TipoOriginal = Usu.Tipo;
            if ((Usu.Tipo & 4) == 4)
            {
                EntradaAcceso.TextKey = "1";
            }
            else
            {
                EntradaAcceso.TextKey = "0";
            }

            // No se pueden agregar o quitar permisos del usuario Administrador, sólo cambiar la contraseña
            EntradaAcceso.TemporaryReadOnly = Usu.Id == 1;
            BotonAgregar.Enabled            = Usu.Id != 1;
            BotonQuitar.Enabled             = Usu.Id != 1;

            this.MostrarPermisos(Usu);

            base.ActualizarControl();
        }
示例#3
0
        public override void ActualizarElemento()
        {
            Lbl.Personas.Usuario Pers = this.Elemento as Lbl.Personas.Usuario;

            int Tipo = TipoOriginal;

            if (EntradaAcceso.TextKey == "1")
            {
                Tipo = Tipo | 4;
            }
            else
            {
                Tipo = Tipo & (~4);
            }

            Pers.Tipo = Tipo;

            Pers.NombreUsuario = EntradaNombreUsuario.Text;

            if (EntradaContrasena.Text.Length > 0)
            {
                Pers.Contrasena = EntradaContrasena.Text;
            }

            base.ActualizarElemento();
        }
示例#4
0
        private void Listado_DoubleClick(object sender, System.EventArgs e)
        {
            if (Listado.SelectedItems.Count > 0)
            {
                ListViewItem             Itm  = Listado.SelectedItems[0];
                Lbl.Sys.Permisos.Permiso Perm = Itm.Tag as Lbl.Sys.Permisos.Permiso;
                if (Perm != null)
                {
                    Lbl.Personas.Usuario Usu = this.Elemento as Lbl.Personas.Usuario;
                    EditarPermiso        FormularioAgregar = new EditarPermiso();
                    FormularioAgregar.Usuario = Usu;
                    FormularioAgregar.Permiso = Perm;

                    if (FormularioAgregar.ShowDialog() == DialogResult.OK)
                    {
                        // Elimino el permiso viejo
                        Listado.Items.Remove(Itm);
                        Usu.Pemisos.Remove(Perm);

                        // Agrego el nuevo
                        Lbl.Sys.Permisos.Permiso NuevoPerm = FormularioAgregar.Permiso;
                        Usu.Pemisos.Add(NuevoPerm);

                        Listado.Changed = true;
                        this.MostrarPermiso(NuevoPerm);
                    }
                }
            }
        }
示例#5
0
        private void BotonAceptar_Click(object sender, System.EventArgs e)
        {
            if (EntradaUsuario.ValueInt == 0)
            {
                MessageBox.Show("Por favor ingrese su número de usuario y su contraseña.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;
            }

            if (EntradaUsuario.ValueInt == 1 && Lfx.Workspace.Master.DebugMode == false)
            {
                string[] EstacionesAdministrador = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting <string>("Sistema.Ingreso.Administrador.Estaciones", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                bool     Puede = false;
                if (EstacionesAdministrador.Length == 0)
                {
                    Puede = true;
                }
                else
                {
                    foreach (string Estacion in EstacionesAdministrador)
                    {
                        if (Estacion.ToUpperInvariant() == Lfx.Environment.SystemInformation.MachineName)
                        {
                            Puede = true;
                            break;
                        }
                    }
                }

                if (Puede == false)
                {
                    System.Threading.Thread.Sleep(800);
                    Lbl.Sys.Config.ActionLog(Lfx.Workspace.Master.MasterConnection, Lbl.Sys.Log.Acciones.LogOnFail, EntradaUsuario.Elemento, "Equipo no permitido.");
                    MessageBox.Show("No se permite el acceso como Administrador desde este equipo.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
            }

            Lbl.Personas.Usuario Usu = new Lbl.Personas.Usuario(Lfx.Workspace.Master.MasterConnection, EntradaUsuario.ValueInt);
            if (Usu.ContrasenaValida(EntradaContrasena.Text) == false)
            {
                System.Threading.Thread.Sleep(800);
                Lbl.Sys.Config.ActionLog(Lfx.Workspace.Master.MasterConnection, Lbl.Sys.Log.Acciones.LogOnFail, EntradaUsuario.Elemento, "Usuario o contraseña incorrecto.");
                MessageBox.Show("El nombre de usuario o la contraseña son incorrectos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                EntradaContrasena.SelectionStart  = 0;
                EntradaContrasena.SelectionLength = EntradaContrasena.Text.Length;
                EntradaContrasena.Focus();
            }
            else
            {
                OkButton.Text = "Ingresando...";
                OkButton.Refresh();
                //Lbl.Personas.Persona Usuario = new Lbl.Personas.Persona(Lfx.Workspace.Master.MasterConnection, Usu.Id);
                Lbl.Sys.Config.Actual.UsuarioConectado = new Lbl.Sys.Configuracion.UsuarioConectado(Usu);
                Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Ingreso.UltimoUsuario", Lbl.Sys.Config.Actual.UsuarioConectado.Id.ToString(), Lfx.Environment.SystemInformation.MachineName);
                Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Ingreso.UltimoIngreso", Lfx.Types.Formatting.FormatDateTimeSql(System.DateTime.Now), Lfx.Environment.SystemInformation.MachineName);
                Lbl.Sys.Config.ActionLog(Lfx.Workspace.Master.MasterConnection, Lbl.Sys.Log.Acciones.LogOn, Usu, null);
                this.Close();
            }
        }
示例#6
0
        private void QuitarPermiso(Lbl.Sys.Permisos.Permiso permiso)
        {
            Lbl.Personas.Usuario Usu = this.Elemento as Lbl.Personas.Usuario;

            Usu.Pemisos.Remove(permiso);
            Listado.Items.RemoveByKey(permiso.GetHashCode().ToString());
            Listado.Changed = true;
        }
示例#7
0
 public Permiso(Lbl.Personas.Usuario usuario, Objeto tipo, Operaciones ops, ListaIds item)
     : this(usuario.Connection)
 {
     this.Usuario     = usuario;
     this.Objeto      = tipo;
     this.Operaciones = ops;
     this.Item        = item;
 }
示例#8
0
 public Permiso(Lbl.Personas.Usuario usuario, Objeto tipo, Operaciones ops, ListaIds item)
         : this(usuario.Connection)
 {
         this.Usuario = usuario;
         this.Objeto = tipo;
         this.Operaciones = ops;
         this.Item = item;
 }
示例#9
0
 public ListaDePermisos(Lbl.Personas.Usuario usuario, System.Data.DataTable tabla)
     : base(usuario.Connection, tabla)
 {
     this.Usuario = usuario;
     foreach (Permiso Perm in this)
     {
         Perm.Usuario = usuario;
     }
 }
示例#10
0
        public bool ValidateAs(int userId)
        {
            if (userId == 1)
            {
                Titulo.Text = "Escriba la contraseña de Administrador";
                if (Explain == null)
                {
                    LabelExplain.Text = "La operación que intenta realizar requiere por motivos de seguridad que escriba la contraseña de Administrador.";
                }
                else
                {
                    LabelExplain.Text = Explain;
                }
            }
            else if (userId != Lbl.Sys.Config.Actual.UsuarioConectado.Id)
            {
                this.Titulo.Text = "Para continuar, por favor escriba la contraseña del usuario.";
                if (Explain == null)
                {
                    this.LabelExplain.Text = "La operación que intenta realizar requiere por motivos de seguridad que escribir la contraseña de un usuario con permiso.";
                }
                else
                {
                    LabelExplain.Text = Explain;
                }
            }

            Lbl.Personas.Usuario Usuario = new Lbl.Personas.Usuario(this.Connection, userId);

            EntradaUsuario.Text    = Usuario.Nombre;
            EntradaContrasena.Text = "";
            if (this.ShowDialog() == DialogResult.OK)
            {
                if (Usuario.ContrasenaValida(EntradaContrasena.Text) == true)
                {
                    return(true);
                }
                else
                {
                    Lui.Forms.MessageBox.Show("La contraseña proporcionada no es correcta.", "Error");
                    System.Threading.Thread.Sleep(1000);
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
示例#11
0
        private void MostrarPermisos(Lbl.Personas.Usuario usuario)
        {
            Listado.SuspendLayout();
            Listado.Items.Clear();

            foreach (Lbl.Sys.Permisos.Permiso Perm in usuario.Pemisos)
            {
                this.MostrarPermiso(Perm);
            }

            Listado.Sorting = SortOrder.Ascending;
            Listado.Sort();

            Listado.ResumeLayout();
        }
示例#12
0
        private void BotonAgregar_Click(object sender, System.EventArgs e)
        {
            Lbl.Personas.Usuario Usu = this.Elemento as Lbl.Personas.Usuario;
            EditarPermiso        FormularioAgregar = new EditarPermiso();

            FormularioAgregar.Usuario = Usu;

            if (FormularioAgregar.ShowDialog() == DialogResult.OK)
            {
                Lbl.Sys.Permisos.Permiso NuevoPerm = FormularioAgregar.Permiso;
                Usu.Pemisos.Add(NuevoPerm);
                Listado.Changed = true;
                this.MostrarPermiso(NuevoPerm);
            }
        }
示例#13
0
 public ListaDePermisos(Lbl.Personas.Usuario usuario)
     : base(usuario.Connection)
 {
 }
示例#14
0
		private void BotonAceptar_Click(object sender, System.EventArgs e)
		{
                        if (EntradaUsuario.ValueInt == 0) {
                                MessageBox.Show("Por favor ingrese su número de usuario y su contraseña.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                                return;
                        }

                        if (EntradaUsuario.ValueInt == 1 && Lfx.Workspace.Master.DebugMode == false) {
                                string[] EstacionesAdministrador = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<string>("Sistema.Ingreso.Administrador.Estaciones", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                bool Puede = false;
                                if (EstacionesAdministrador.Length == 0) {
                                        Puede = true;
                                } else {
                                        foreach (string Estacion in EstacionesAdministrador) {
                                                if (Estacion.ToUpperInvariant() == Lfx.Environment.SystemInformation.MachineName) {
                                                        Puede = true;
                                                        break;
                                                }
                                        }
                                }

                                if (Puede == false) {
                                        System.Threading.Thread.Sleep(800);
                                        Lbl.Sys.Config.ActionLog(Lfx.Workspace.Master.MasterConnection, Lbl.Sys.Log.Acciones.LogOnFail, EntradaUsuario.Elemento, "Equipo no permitido.");
                                        MessageBox.Show("No se permite el acceso como Administrador desde este equipo.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        return;
                                }
                        }

                        Lbl.Personas.Usuario Usu = new Lbl.Personas.Usuario(Lfx.Workspace.Master.MasterConnection, EntradaUsuario.ValueInt);
                        if(Usu.ContrasenaValida(EntradaContrasena.Text) == false) {
				System.Threading.Thread.Sleep(800);
                                Lbl.Sys.Config.ActionLog(Lfx.Workspace.Master.MasterConnection, Lbl.Sys.Log.Acciones.LogOnFail, EntradaUsuario.Elemento, "Usuario o contraseña incorrecto.");
				MessageBox.Show("El nombre de usuario o la contraseña son incorrectos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                EntradaContrasena.SelectionStart = 0;
                                EntradaContrasena.SelectionLength = EntradaContrasena.Text.Length;
				EntradaContrasena.Focus();
			} else {
				OkButton.Text = "Ingresando...";
				OkButton.Refresh();
                                //Lbl.Personas.Persona Usuario = new Lbl.Personas.Persona(Lfx.Workspace.Master.MasterConnection, Usu.Id);
                                Lbl.Sys.Config.Actual.UsuarioConectado = new Lbl.Sys.Configuracion.UsuarioConectado(Usu);
                                Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Ingreso.UltimoUsuario", Lbl.Sys.Config.Actual.UsuarioConectado.Id.ToString(), Lfx.Environment.SystemInformation.MachineName);
				Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Ingreso.UltimoIngreso", Lfx.Types.Formatting.FormatDateTimeSql(System.DateTime.Now), Lfx.Environment.SystemInformation.MachineName);
                                Lbl.Sys.Config.ActionLog(Lfx.Workspace.Master.MasterConnection, Lbl.Sys.Log.Acciones.LogOn, Usu, null);
				this.Close();
			}
		}
示例#15
0
 public UsuarioConectado(Lbl.Personas.Usuario usuario)
 {
     this.Usuario = usuario;
 }
示例#16
0
                /// <summary>
                /// Inicia la interfaz gráfica del programa.
                /// </summary>
                private static Lfx.Types.OperationResult IniciarGui()
                {
                        int Configurado = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<int>("Sistema.Configurado", 0);
                        if ((Configurado == 0 && Lbl.Sys.Config.Empresa.ClaveTributaria == null) || string.IsNullOrEmpty(Lbl.Sys.Config.Empresa.Nombre)) {
                                Config.Preferencias FormConfig = new Config.Preferencias();
                                FormConfig.PrimeraVez = true;
                                if (FormConfig.ShowDialog() != DialogResult.OK)
                                        Ejecutor.Exec("QUIT");
                        }

                        System.DateTime FechaServidor = System.Convert.ToDateTime(Lfx.Workspace.Master.MasterConnection.FirstRowFromSelect("SELECT NOW()")[0]);
                        System.TimeSpan Diferencia = FechaServidor - System.DateTime.Now;
                        if (Math.Abs(Diferencia.TotalMinutes) > 10) {
                                string DiferenciaExplicada = "";
                                if (Math.Abs(Diferencia.TotalDays) >= 2)
                                        DiferenciaExplicada = Math.Ceiling(Math.Abs(Diferencia.TotalDays)).ToString() + " días";
                                else if (Math.Abs(Diferencia.TotalHours) >= 2)
                                        DiferenciaExplicada = Math.Ceiling(Math.Abs(Diferencia.TotalHours)).ToString() + " horas";
                                else
                                        DiferenciaExplicada = Math.Ceiling(Math.Abs(Diferencia.TotalMinutes)).ToString() + " minutos";

                                Lfx.Workspace.Master.RunTime.Toast("Existe una diferencia de " + DiferenciaExplicada + " entre el reloj del servidor SQL y el reloj de este equipo. Es necesario que revise y ajuste el reloj de ambos equipos a la brevedad.", "Error de fecha y hora");
                        }


                        // Si el administrador tiene la contraseña predeterminada y aquí entro siempre como administrador
                        // o todavía no entré nunca, ingreso directamente sin pedir contraseña.
                        int UltimoUsuario = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<int>("Sistema.Ingreso.UltimoUsuario", 1);
                        if(UltimoUsuario == 1) {
                                Lbl.Personas.Usuario Usu = new Lbl.Personas.Usuario(Lfx.Workspace.Master.MasterConnection, 1);
                                if (Usu.ContrasenaValida("admin"))
                                        Lbl.Sys.Config.Actual.UsuarioConectado = new Lbl.Sys.Configuracion.UsuarioConectado(Usu);
                        }

                        if (Lbl.Sys.Config.Actual.UsuarioConectado.Id == 0) {
                                using (Lazaro.WinMain.Misc.Ingreso FormIngreso = new Lazaro.WinMain.Misc.Ingreso()) {
                                        FormIngreso.Connection = Lfx.Workspace.Master.MasterConnection;
                                        FormIngreso.ShowDialog();
                                }
                        }


                        if (Lbl.Sys.Config.Actual.UsuarioConectado.Id > 0) {
                                if (Lfx.Workspace.Master.SlowLink == false && Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<string>("Sistema.Backup.Tipo", "0") == "2") {
                                        string FechaActual = System.DateTime.Now.ToString("yyyy-MM-dd");
                                        string FechaBackup = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<string>("Sistema.Backup.Ultimo", "");
                                        if (FechaActual != FechaBackup) {
                                                int Articulos = Lfx.Workspace.Master.MasterConnection.FieldInt("SELECT COUNT(id_articulo) FROM articulos");
                                                if (Articulos > 0) {
                                                        //Hago un backup automático, una vez por día, siempre que haya al menos 1 artículo en la BD
                                                        //Esto es para evitar hacer backup de una BD vacía
                                                        Ejecutor.Exec("BACKUP NOW");
                                                        Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Backup.Ultimo", FechaActual);
                                                }
                                        }
                                }

                                // Mostrar qué hay de nuevo
                                string FechaWhatsnew = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<string>("Usuario." + Lbl.Sys.Config.Actual.UsuarioConectado.Id.ToString() + ".Whatsnew.Ultimo", "firsttime");
                                if (FechaWhatsnew == "firsttime") {
                                        // Primera vez que entra. No muestro qué hay de nuevo (TODO: pero podría darle una bienvenida)
                                        Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Usuario." + Lbl.Sys.Config.Actual.UsuarioConectado.Id.ToString() + ".Whatsnew.Ultimo", System.DateTime.Now.ToString("yyyy-MM-dd"));
                                } else {
                                        // Veo si hay novedades para mostrar
                                        // string FechaWhatsnewOriginal = FechaWhatsnew;
                                        System.IO.StreamReader Whatsnew = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Lazaro.whatsnew.txt"));
                                        System.Text.StringBuilder Mostrar = null;
                                        bool Mostrando = false;
                                        while (Whatsnew.EndOfStream == false) {
                                                string Linea = Whatsnew.ReadLine();
                                                if (Linea.Length > 4 && Linea.Substring(0, 4) == "*** ") {
                                                        string FechaLinea = Linea.Substring(4, Linea.Length - 4);
                                                        if (string.Compare(FechaLinea, FechaWhatsnew) > 0) {
                                                                FechaWhatsnew = FechaLinea;
                                                                Linea = Lfx.Types.Parsing.ParseDate(FechaLinea).Value.ToString(Lfx.Types.Formatting.DateTime.LongDatePattern) + ":";
                                                                Mostrando = true;
                                                        }
                                                }

                                                if (Mostrando) {
                                                        if (Mostrar == null) {
                                                                Mostrar = new System.Text.StringBuilder();
                                                                Mostrar.AppendLine("Por favor tómese un momento para leer sobre las novedades incorporadas recientemente en Lázaro:");
                                                                Mostrar.AppendLine("");
                                                        }
                                                        Mostrar.AppendLine(Linea.Replace("* ", "• "));
                                                }
                                        }
                                        Whatsnew.BaseStream.Close();
                                        Whatsnew.Close();
                                        if (Mostrar != null && Mostrar.Length > 0) {
                                                Lfx.Workspace.Master.RunTime.Toast(Mostrar.ToString(), "Novedades");
                                                Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Usuario." + Lbl.Sys.Config.Actual.UsuarioConectado.Id.ToString(), "Whatsnew.Ultimo", FechaWhatsnew);
                                        }
                                }

                                // Mostrar el formulario
                                Lfx.Workspace.Master.MainForm = new Principal.Inicio();
                                Aplicacion.FormularioPrincipal.Show();
                                if (FechaWhatsnew == "firsttime") {
                                        Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("¡Hola! ¿Le gustaría ver una página sencilla con un poco de información sobre cómo utilizar Lázaro?", "Primeros pasos");
                                        Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                                        if (Pregunta.ShowDialog() == DialogResult.OK)
                                                Help.ShowHelp(Aplicacion.FormularioPrincipal, "http://www.lazarogestion.com/?q=node/44");
                                } else {
                                        string RunTimeName = Lfx.Environment.SystemInformation.RuntimeName;
                                        // Verifico la presencia de .NET Framework 3.5
                                        if (Lfx.Environment.SystemInformation.RunTime == Lfx.Environment.SystemInformation.RunTimes.DotNet && RunTimeName.IndexOf("3.5") < 0) {
                                                Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Es necesario instalar un componente para el correcto funcionamiento de Lázaro. El componente es Microsoft .NET Framework versión 3.5. ¿Desea ir a la página de descarga para instalarlo ahora?", "Advertencia");
                                                Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                                                if (Pregunta.ShowDialog() == DialogResult.OK)
                                                        Help.ShowHelp(Aplicacion.FormularioPrincipal, "http://download.microsoft.com/download/5/3/4/5347CEDC-6A83-49F5-9347-BCD58A9AAE25/DotNetFx35ClientSetup.exe");
                                        }
                                }
                                Application.Run(Aplicacion.FormularioPrincipal);
                        }

                        return new Lfx.Types.SuccessOperationResult();
                }