Exemplo n.º 1
0
        //  Login
        private void button1_Click_1(object sender, EventArgs e)
        {
            label1.ForeColor = Color.Black;
            label2.ForeColor = Color.Black;
            lblInfo.Text     = "";

            if (idProcesoLogin == 0)
            {
                //  Validacion datos del formulario
                if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
                {
                    label1.ForeColor = Color.Red;
                    label2.ForeColor = Color.Red;
                    lblInfo.Text     = "Completar todos datos del formulario";
                }
                else
                {
                    //  Objeto usuario, con la informacion de la sesion
                    usuario = new Utils.Usuario();

                    //  Carga la fecha del sistema
                    usuario.Fecha = fechaDate.ToShortDateString();

                    //  Carga la informacion en usuario
                    usuario.Username = Convert.ToString(this.textBox1.Text);
                    usuario.Password = Herramientas.sha256_hash(textBox2.Text);

                    Herramientas.ejecutarAutenticacion(usuario);

                    switch (usuario.CodLogin)
                    {
                    case 0:         //  Autenticacion correcta con mas de un rol
                    {
                        idProcesoLogin  = 1;
                        gbLogin.Enabled = false;                //Bloquea los datos del usuario

                        //  Busca los roles del usuario para que elija uno
                        gbPermisos.Visible = true;
                        gbPermisos.Enabled = true;
                        List <SqlParameter> lista = Utils.Herramientas.GenerarListaDeParametros(
                            "@usuario_id", Convert.ToInt32(usuario.UsuarioId));
                        Herramientas.llenarComboBoxSP(comboBox1, "SARASA.cbx_rol", lista, true);
                        btnLogin.Text = "Continuar..";
                        break;
                    }

                    case -1:         //  Usuario invalido
                    {
                        label1.ForeColor = Color.Red;
                        label2.ForeColor = Color.Red;
                        lblInfo.Text     = "Usuario incorrecto";
                        break;
                    }

                    case -2:         //  Usuario inhabilitado
                    {
                        lblInfo.Text = "Usuario inhabilitado";
                        break;
                    }

                    case -3:         //  Usuario existe, password incorrecta
                    {
                        //Registra el intento fallido en el usuario
                        lblInfo.Text = "Password incorrecta";
                        string nombreSP = "SARASA.Registrar_Intento_Fallido";                //  Nombre del StoreProcedure
                        List <SqlParameter> listaParametros = Utils.Herramientas.GenerarListaDeParametros(
                            "@usuario_id", this.usuario.UsuarioId);
                        Utils.Herramientas.EjecutarStoredProcedure(nombreSP, listaParametros);

                        //Si tiene 3 intentos fallidos, se inhabilita al usuario
                        string nombreSP2 = "SARASA.Comprueba_Intentos_E_Inhabilita_Usuario";                //  Nombre del StoreProcedure
                        List <SqlParameter> listaParam = Utils.Herramientas.GenerarListaDeParametros(
                            "@usuario_id", this.usuario.UsuarioId);
                        Utils.Herramientas.EjecutarStoredProcedure(nombreSP2, listaParam);

                        //Registra como intento fallido en la tabla de log
                        string nombreSP3 = "SARASA.Registra_Log";                //  Nombre del StoreProcedure
                        List <SqlParameter> listaParam3 = Utils.Herramientas.GenerarListaDeParametros(
                            "@usuario_id", this.usuario.UsuarioId, "@resultado", '0');
                        Utils.Herramientas.EjecutarStoredProcedure(nombreSP3, listaParam3);

                        break;
                    }

                    default:         // Autenticacion correcta, con rol unico
                    {
                        Herramientas.cargarFunciones(usuario);
                        MenuPrincipal menuPrincipal = new MenuPrincipal();
                        menuPrincipal.asignarPadre(this);
                        menuPrincipal.asignarUsuario(usuario);
                        string nombreSP = "SARASA.Reiniciar_Intentos";                //  Nombre del StoreProcedure
                        List <SqlParameter> listaParametros = Utils.Herramientas.GenerarListaDeParametros(
                            "@usuario_id", this.usuario.UsuarioId);

                        Utils.Herramientas.EjecutarStoredProcedure(nombreSP, listaParametros);
                        this.Hide();
                        menuPrincipal.Show();

                        //Registra como intento fallido en la tabla de log
                        string nombreSP3 = "SARASA.Registra_Log";                //  Nombre del StoreProcedure
                        List <SqlParameter> listaParam3 = Utils.Herramientas.GenerarListaDeParametros(
                            "@usuario_id", this.usuario.UsuarioId, "@resultado", '1');
                        Utils.Herramientas.EjecutarStoredProcedure(nombreSP3, listaParam3);

                        break;
                    }
                    }
                }
            }
            else     //    Etapa final de login, si tiene más de un rol, muestra el combo
            {
                // Carga las funciones del rol seleccionado
                usuario.Rol   = ((KeyValuePair <string, string>)comboBox1.SelectedItem).Value;
                usuario.RolId = ((KeyValuePair <string, string>)comboBox1.SelectedItem).Key;

                string nombreSP = "SARASA.Reiniciar_Intentos";        //  Nombre del StoreProcedure
                List <SqlParameter> listaParametros = Utils.Herramientas.GenerarListaDeParametros(
                    "@usuario_id", this.usuario.UsuarioId);
                Utils.Herramientas.EjecutarStoredProcedure(nombreSP, listaParametros);

                //Registra como intento fallido en la tabla de log
                string nombreSP3 = "SARASA.Registra_Log";        //  Nombre del StoreProcedure
                List <SqlParameter> listaParam3 = Utils.Herramientas.GenerarListaDeParametros(
                    "@usuario_id", this.usuario.UsuarioId, "@resultado", '1');
                Utils.Herramientas.EjecutarStoredProcedure(nombreSP3, listaParam3);


                Herramientas.cargarFunciones(usuario);
                MenuPrincipal menuPrincipal = new MenuPrincipal();
                menuPrincipal.asignarPadre(this);
                menuPrincipal.asignarUsuario(usuario);
                this.Hide();
                menuPrincipal.Show();
            }
        }