/// <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); } }
/// <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(); }