示例#1
0
        private void login_btnIngresar_Click(object sender, EventArgs e)
        {
            //Valido el usuario y contraseña
            List <string> listaValidacion = new List <string>();
            string        pass_BD;
            string        pass_ingresada;
            int           id_usuario;
            int           intentos_fallidos;
            string        estado_usu;
            int           forzar_cambio;
            SHA256Managed encriptacionSha256 = new SHA256Managed();

            //Validamos los campos obligatorios
            if (this.login_txtUsr.Text == String.Empty)
            {
                listaValidacion.Add("El Nombre de usuario es obligatorio");
            }

            if (this.login_txtpass.Text == String.Empty)
            {
                listaValidacion.Add("La Contraseña es obligatoria");
            }

            //Muestro un mensaje con los datos mal cargados
            if (listaValidacion.Count > 0)
            {
                StringBuilder error = new StringBuilder();
                error.AppendLine("Por favor corrija los siguientes campos:");

                foreach (var i in listaValidacion)
                {
                    error.AppendLine(i);
                }

                MessageBox.Show(error.ToString());
                return;
            }

            /////////////////////////
            //Validacion del login //
            /////////////////////////
            pass_ingresada =
                Convert.ToBase64String(encriptacionSha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(this.login_txtpass.Text)));

            //Traigo la contraseña de la BD
            System.Data.SqlClient.SqlCommand comPass = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getPassXNombre");

            //Defino los parametros
            System.Data.SqlClient.SqlParameter p1 = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());

            //Agrego el parametro a la lista de parametros
            comPass.Parameters.Add(p1);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();

            System.Data.SqlClient.SqlDataReader dup = AccesoDatos.getInstancia().ejecutaSP(comPass);

            if (!dup.HasRows)
            {
                // Cierro la conexion
                dup.Close();
                AccesoDatos.getInstancia().cerrarConexion();

                MessageBox.Show("Usuario Inexistente");
                return;
            }

            dup.Read();
            pass_BD           = dup.GetString(0);
            intentos_fallidos = dup.GetInt16(1);
            estado_usu        = dup.GetString(2);
            forzar_cambio     = dup.GetInt16(3);

            // Cierro la conexion
            dup.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            if (!estado_usu.Equals("Habilitado"))
            {
                MessageBox.Show("Su usuario no puede ingresar al sistema, contactese con los administradores");
                return;
            }

            if (!pass_ingresada.Equals(pass_BD))
            {
                //Registro el intento fallido
                System.Data.SqlClient.SqlCommand comFalla = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_setFallaLoginXNombre");

                //Defino los parametros
                System.Data.SqlClient.SqlParameter pFalla = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());

                //Agrego el parametro a la lista de parametros
                comFalla.Parameters.Add(pFalla);

                // Abro la conexion
                AccesoDatos.getInstancia().abrirConexion();

                System.Data.SqlClient.SqlDataReader falla = AccesoDatos.getInstancia().ejecutaSP(comFalla);

                // Cierro la conexion
                falla.Close();
                AccesoDatos.getInstancia().cerrarConexion();

                MessageBox.Show("Contraseña incorrecta");
                return;
            }

            //Reseteo los intentos fallidos
            System.Data.SqlClient.SqlCommand comReset = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_resetIntentosXNombre");

            //Defino los parametros
            System.Data.SqlClient.SqlParameter pReset = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());

            //Agrego el parametro a la lista de parametros
            comReset.Parameters.Add(pReset);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();

            System.Data.SqlClient.SqlDataReader reset = AccesoDatos.getInstancia().ejecutaSP(comReset);

            // Cierro la conexion
            reset.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            ////////////////////////////////
            //     Roles del usuario      //
            ////////////////////////////////
            //Primero traigo el ID de Usuario
            System.Data.SqlClient.SqlCommand comUsuario = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getIdUsuarioXNombre");
            //Defino los parametros
            System.Data.SqlClient.SqlParameter pUsu = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());
            //Agrego el parametro a la lista de parametros
            comUsuario.Parameters.Add(pUsu);
            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();
            System.Data.SqlClient.SqlDataReader idusuario = AccesoDatos.getInstancia().ejecutaSP(comUsuario);

            idusuario.Read();
            id_usuario = idusuario.GetInt32(0);

            // Cierro la conexion
            reset.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            //Traigo los roles asociados
            System.Data.SqlClient.SqlCommand   comRoles = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getRolesUsuario");
            System.Data.SqlClient.SqlParameter pRoles   = new System.Data.SqlClient.SqlParameter("@id_usuario", id_usuario);
            comRoles.Parameters.Add(pRoles);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();
            System.Data.SqlClient.SqlDataReader roles = AccesoDatos.getInstancia().ejecutaSP(comRoles);

            //Cargo el array del resultado
            ArrayList listaRoles = new ArrayList();
            int       it         = 0;

            while (roles.Read())
            {
                listaRoles.Add(new DTO.RolDTO(roles.GetInt32(0), roles.GetString(1)));
                it++;
            }

            // Cierro la conexion
            roles.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            if (listaRoles.Count == 0)
            {
                MessageBox.Show("No posee roles habilitados en el sistema. Contactese con los administradores");
                return;
            }

            //guardo el id_usuario en el aplicativo
            this.ppal_id_usuario = id_usuario;

            if (forzar_cambio == 1)
            {
                MessageBox.Show("Debe modificar su contraseña.");

                Pass.ModPass fPass = new FrbaCommerce.Pass.ModPass();
                fPass.idusuario = this.ppal_id_usuario;
                fPass.ShowDialog();
                return;
            }

            //Si tiene mas de un rol despliego el form de seleccion
            int id_rol_seleccionado;

            if (listaRoles.Count > 1)
            {
                Perfil fPerfil = new Perfil(listaRoles);
                fPerfil.ShowDialog();
                id_rol_seleccionado = fPerfil.getRolSeleccionado();
            }
            else
            {
                id_rol_seleccionado = ((DTO.RolDTO)listaRoles[0]).idRol;
            }

            //guardo el id_rol en el aplicativo
            this.ppal_id_rol = id_rol_seleccionado;

            //Traigo las funciones asociadas al rol
            System.Data.SqlClient.SqlCommand   comFunc = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getFuncionesRol");
            System.Data.SqlClient.SqlParameter pFunc   = new System.Data.SqlClient.SqlParameter("@id_rol", ppal_id_rol);
            comFunc.Parameters.Add(pFunc);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();
            System.Data.SqlClient.SqlDataReader funciones = AccesoDatos.getInstancia().ejecutaSP(comFunc);

            //Cargo el array del resultado
            ArrayList listaFunc = new ArrayList();

            while (funciones.Read())
            {
                listaFunc.Add(new DTO.RolDTO(funciones.GetInt32(0), funciones.GetString(1)));
            }

            // Cierro la conexion
            funciones.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            listaFunciones.DataSource    = listaFunc;
            listaFunciones.DisplayMember = "descRol";
            listaFunciones.ValueMember   = "idRol";


            // Blanqueo y Habilito el proximo panel
            this.login_txtUsr.Clear();
            this.login_txtpass.Clear();
            this.panelInicio.Hide();
            this.panelPpal.Show();
        }
示例#2
0
        private void login_btnIngresar_Click(object sender, EventArgs e)
        {
            //Valido el usuario y contraseña
            List<string> listaValidacion = new List<string>();
            string pass_BD;
            string pass_ingresada;
            int id_usuario;
            int intentos_fallidos;
            string estado_usu;
            int forzar_cambio;
            SHA256Managed encriptacionSha256 = new SHA256Managed();

            //Validamos los campos obligatorios
            if (this.login_txtUsr.Text == String.Empty)
            {
                listaValidacion.Add("El Nombre de usuario es obligatorio");
            }

            if (this.login_txtpass.Text == String.Empty)
            {
                listaValidacion.Add("La Contraseña es obligatoria");
            }

            //Muestro un mensaje con los datos mal cargados
            if (listaValidacion.Count > 0)
            {
                StringBuilder error = new StringBuilder();
                error.AppendLine("Por favor corrija los siguientes campos:");

                foreach (var i in listaValidacion)
                {
                    error.AppendLine(i);
                }

                MessageBox.Show(error.ToString());
                return;
            }

            /////////////////////////
            //Validacion del login //
            /////////////////////////
            pass_ingresada =
                Convert.ToBase64String(encriptacionSha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(this.login_txtpass.Text)));

            //Traigo la contraseña de la BD
            System.Data.SqlClient.SqlCommand comPass = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getPassXNombre");

            //Defino los parametros
            System.Data.SqlClient.SqlParameter p1 = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());

            //Agrego el parametro a la lista de parametros
            comPass.Parameters.Add(p1);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();

            System.Data.SqlClient.SqlDataReader dup = AccesoDatos.getInstancia().ejecutaSP(comPass);

            if (!dup.HasRows)
            {
                // Cierro la conexion
                dup.Close();
                AccesoDatos.getInstancia().cerrarConexion();

                MessageBox.Show("Usuario Inexistente");
                return;
            }

            dup.Read();
            pass_BD = dup.GetString(0);
            intentos_fallidos = dup.GetInt16(1);
            estado_usu = dup.GetString(2);
            forzar_cambio = dup.GetInt16(3);

            // Cierro la conexion
            dup.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            if (!estado_usu.Equals("Habilitado"))
            {
                MessageBox.Show("Su usuario no puede ingresar al sistema, contactese con los administradores");
                return;
            }

            if (!pass_ingresada.Equals(pass_BD))
            {
                //Registro el intento fallido
                System.Data.SqlClient.SqlCommand comFalla = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_setFallaLoginXNombre");

                //Defino los parametros
                System.Data.SqlClient.SqlParameter pFalla = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());

                //Agrego el parametro a la lista de parametros
                comFalla.Parameters.Add(pFalla);

                // Abro la conexion
                AccesoDatos.getInstancia().abrirConexion();

                System.Data.SqlClient.SqlDataReader falla = AccesoDatos.getInstancia().ejecutaSP(comFalla);

                // Cierro la conexion
                falla.Close();
                AccesoDatos.getInstancia().cerrarConexion();

                MessageBox.Show("Contraseña incorrecta");
                return;
            }

            //Reseteo los intentos fallidos
            System.Data.SqlClient.SqlCommand comReset = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_resetIntentosXNombre");

            //Defino los parametros
            System.Data.SqlClient.SqlParameter pReset = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());

            //Agrego el parametro a la lista de parametros
            comReset.Parameters.Add(pReset);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();

            System.Data.SqlClient.SqlDataReader reset = AccesoDatos.getInstancia().ejecutaSP(comReset);

            // Cierro la conexion
            reset.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            ////////////////////////////////
            //     Roles del usuario      //
            ////////////////////////////////
            //Primero traigo el ID de Usuario
            System.Data.SqlClient.SqlCommand comUsuario = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getIdUsuarioXNombre");
            //Defino los parametros
            System.Data.SqlClient.SqlParameter pUsu = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim());
            //Agrego el parametro a la lista de parametros
            comUsuario.Parameters.Add(pUsu);
            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();
            System.Data.SqlClient.SqlDataReader idusuario = AccesoDatos.getInstancia().ejecutaSP(comUsuario);

            idusuario.Read();
            id_usuario = idusuario.GetInt32(0);

            // Cierro la conexion
            reset.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            //Traigo los roles asociados
            System.Data.SqlClient.SqlCommand comRoles = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getRolesUsuario");
            System.Data.SqlClient.SqlParameter pRoles = new System.Data.SqlClient.SqlParameter("@id_usuario", id_usuario);
            comRoles.Parameters.Add(pRoles);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();
            System.Data.SqlClient.SqlDataReader roles = AccesoDatos.getInstancia().ejecutaSP(comRoles);

            //Cargo el array del resultado
            ArrayList listaRoles = new ArrayList();
            int it=0;
            while (roles.Read())
            {
                listaRoles.Add(new DTO.RolDTO(roles.GetInt32(0),roles.GetString(1)));
                it++;
            }

            // Cierro la conexion
            roles.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            if (listaRoles.Count == 0)
            {
                MessageBox.Show("No posee roles habilitados en el sistema. Contactese con los administradores");
                return;
            }

            //guardo el id_usuario en el aplicativo
            this.ppal_id_usuario = id_usuario;

            if (forzar_cambio == 1)
            {
                MessageBox.Show("Debe modificar su contraseña.");

                Pass.ModPass fPass = new FrbaCommerce.Pass.ModPass();
                fPass.idusuario = this.ppal_id_usuario;
                fPass.ShowDialog();
                return;
            }

            //Si tiene mas de un rol despliego el form de seleccion
            int id_rol_seleccionado;
            if (listaRoles.Count > 1)
            {
                Perfil fPerfil = new Perfil(listaRoles);
                fPerfil.ShowDialog();
                id_rol_seleccionado = fPerfil.getRolSeleccionado();
            }
            else
            {
                id_rol_seleccionado = ((DTO.RolDTO)listaRoles[0]).idRol;
            }

            //guardo el id_rol en el aplicativo
            this.ppal_id_rol = id_rol_seleccionado;

            //Traigo las funciones asociadas al rol
            System.Data.SqlClient.SqlCommand comFunc = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getFuncionesRol");
            System.Data.SqlClient.SqlParameter pFunc = new System.Data.SqlClient.SqlParameter("@id_rol", ppal_id_rol);
            comFunc.Parameters.Add(pFunc);

            // Abro la conexion
            AccesoDatos.getInstancia().abrirConexion();
            System.Data.SqlClient.SqlDataReader funciones = AccesoDatos.getInstancia().ejecutaSP(comFunc);

            //Cargo el array del resultado
            ArrayList listaFunc = new ArrayList();
            while (funciones.Read())
            {
                listaFunc.Add(new DTO.RolDTO(funciones.GetInt32(0), funciones.GetString(1)));
            }

            // Cierro la conexion
            funciones.Close();
            AccesoDatos.getInstancia().cerrarConexion();

            listaFunciones.DataSource = listaFunc;
            listaFunciones.DisplayMember = "descRol";
            listaFunciones.ValueMember = "idRol";

            // Blanqueo y Habilito el proximo panel
            this.login_txtUsr.Clear();
            this.login_txtpass.Clear();
            this.panelInicio.Hide();
            this.panelPpal.Show();
        }