コード例 #1
0
        /// <summary>
        /// Cambia el password de un usuario dado si los datos ingresados son correctos
        /// </summary>
        private void cambiarPass()
        {
            try
            {
                //Genero los strings con los datos ingresados
                string usuario = this.campoDni.Text.Trim();
                string campoPass = this.campoPass.Text.Trim();
                string nuevoPass = this.nuevoPass.Text.Trim();
                string confirmacionPass = this.confirmarNuevoPass.Text.Trim();

                //Primero verifico que los campos no sean vacios
                if (usuario.Equals(""))
                    throw new CamposVaciosException();

                if (campoPass.Equals(""))
                    throw new CamposVaciosException();

                if (nuevoPass.Equals(""))
                    throw new CamposVaciosException();

                if (confirmacionPass.Equals(""))
                    throw new CamposVaciosException();

                //Ahora tengo que validar que el usuario y password ingresados exista
                GestorUsuarios usuarioDAO = new GestorUsuarios();
                //El metodo autenticar ya tira la excepciòn si no tiene éxito
                usuarioDAO.autenticar(usuario, campoPass);

                //Verifico que el nuevo password y la confimación sean iguales
                if (!nuevoPass.Equals(confirmacionPass))
                    throw new NoCoincidePassException();

                //Documento debe ser numérico
                int numeroDoc;

                if (int.TryParse(usuario, out numeroDoc))
                    numeroDoc = int.Parse(usuario);
                else
                    throw new Exception("El documento debe ser numerico");

                //Verifico la longitud mínima de la nueva contraseña
                if (nuevoPass.Length < 6)
                    throw new Exception("La longitud mínima es de 6 caracteres");

                //Verifico la longitud máxima de la nueva contraseña
                if (nuevoPass.Length > 40)
                    throw new Exception("La longitud máxima es de 40 caracteres");

                //La contraseña debe contener solo letras y números
                //Utilizo expresiones regulares para esta validación
                // (De paso aprendo algo nuevo ;D
                String Patron = "^[a-zA-Z0-9-]+$";
                Regex ExpresionRegular = new Regex(Patron);

                if (!ExpresionRegular.IsMatch(nuevoPass))
                    throw new SintaxisPasswordInvalida();

                //Verifico que no existan inyecciones SQL
                //No verifico el password porque va a estar encriptado así que no
                //importa lo que escriban, al final va a ser un monton de letras extrañas
                AntiInyeccionSQL antiInyeccion = new AntiInyeccionSQL();
                antiInyeccion.validarString(usuario);

                //Actualizo la base de datos
                usuarioDAO.cambiarPassword(usuario, nuevoPass);
                MessageBox.Show("Password modificado con éxito", "Password Cambiado",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);

                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Inválido", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #2
0
        /// <summary>
        /// Verifica los datos ingresados. Si son correctos los actualiza
        /// </summary>
        private void actualizarDatos()
        {
            //primero valido la sintaxis del email
            bool ok = validarEmail(this.emailTextBox.Text);
            if (!ok)
            {
                MessageBox.Show("Email incorrecto", "Campo Inválido", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //Incluyo el carater de escape para poder introducir la ' en mysql
            string email = this.emailTextBox.Text.Replace("'", "\\'").Trim();
            string direccion = this.direccionTextBox.Text.Replace("'", "\\'").Trim();
            string telefonoFijo = this.telFijoTextBox.Text.Replace("'", "\\'").Trim();
            string telefonoCelular = this.telCelularTextBox.Text.Replace("'", "\\'").Trim();

            // Verifico la longitud maxima y minima de los campos
            if (email.Length > 40)
            {
                MessageBox.Show("Email inválido", "Campo Inválido", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (direccion.Length < 7 || direccion.Length > 50)
            {
                MessageBox.Show("Dirección inválida", "Campo Inválido", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if ((telefonoFijo.Length > 0 && telefonoFijo.Length < 7) || telefonoFijo.Length > 20)
            {
                MessageBox.Show("Teléfono fijo inválido", "Campo Inválido", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (telefonoCelular.Length > 0 && telefonoCelular.Length < 10 || telefonoCelular.Length > 20)
            {
                MessageBox.Show("Teléfono celular inválido", "Campo Inválido", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //Verificación contra inyecciones SQL
            AntiInyeccionSQL antiInyeccion = new AntiInyeccionSQL();
            antiInyeccion.validarString(email);
            antiInyeccion.validarString(direccion);
            antiInyeccion.validarString(telefonoFijo);
            antiInyeccion.validarString(telefonoCelular);

            //Si todo es válido guardo los datos
            usuario.Email = email;
            usuario.Direccion = direccion;
            usuario.TelefonoFijo = telefonoFijo;
            usuario.TelefonoCelular = telefonoCelular;

            GestorUsuarios gestor = new GestorUsuarios();
            gestor.actualizarDatos(usuario);

            MessageBox.Show("Datos actualizados con éxito", "Operación exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }