Regla de validación para contraseñas en Xamarin Forms

Contenido

Aprende a aplicar reglas de validaciones a las contraseñas de tus aplicaciones en Xamarin.Forms. La mejor manera, y la mas rápida, es usando la librería Plugin.ValidationRules.

Este articulo usa la librería Plugin.ValidationRules que descargar desde la NuGet Gallery aquí.

Este articulo es parte de una pequeña serie a la que llamo «Tips and Tricks con Plugin.ValidationRules» donde te enseñare a sacarle el mayor provecho a esta librería para que no tengas dolores de cabeza haciendo validaciones en tus formularios.

Validando la contraseña

Creando la regla de validación

Lo primero que tenemos que tener pendiente es que si quieres jugar con reglas de validación, tienes que crear tus reglas. En este caso, te paso un pequeño ejemplo de una regla de validación para las contraseñas que puedes usar con Plugin.ValidationRules.

...
    public class PasswordRule : IValidationRule<string>
    {
        public string ValidationMessage { get; set; }

        public bool Check(string value)
        {
            if (value == null)
            {
                ValidationMessage = "A password is required.";
                return false;
            }

            if (!char.IsLetter(value[0]))
            {
                ValidationMessage = "First character must be a letter.";
                return false;
            }

            if (!char.IsUpper(value[0]))
            {
                ValidationMessage = "First letter must be Capitalize.";
                return false;
            }

            if (value.Length < 8)
            {
                ValidationMessage = "Password length must be 8 characters minimum.";
                return false;
            }

            if (!value.Any(char.IsDigit))
            {
                ValidationMessage = "Your password must contain numbers.";
                return false;
            }

            if (!value.Any(char.IsSymbol) && !value.Any(char.IsPunctuation))
            {
                ValidationMessage = "Your password must contain symbols.";
                return false;
            }

            return true; // Yupiii ! We did !!!
        }
    }
...

Aplicando las reglas de validación

Con la nueva version de Plugin.ValidationRules tenemos un builder que podemos utilizar para inicializar nuestras propiedades de manera muy fácil.

...
        public Validatable<string> Password { get; set; }
        public Validatable<string> ConfirmPassword { get; set; }
...
        Password = Validator.Build<string>()
                .IsRequired("A password is required.")
                .WithRule(new PasswordRule());

        ConfirmPassword = Validator.Build<string>()
                .When(_ => !string.IsNullOrEmpty(Password.Value))
                .Must(x => x == Password.Value, "Password is not matching.");
...
  • Fíjate que estamos utilizando Validator.Build<string>() para inicializar nuestra propiedad.
  • Utilizamos la extension .IsRequired() para agregar una regla de validación de no nulos o vacíos.
  • Con la extensión .WithRule() agregamos nuestra regla de validacion para la contraseña PasswordRule() que creamos anteriormente.

Extra: ConfirmPassword

Si queremos confirmar la contraseña, no tenemos que agregar las mismas reglas sino mas bien, comparar ambas contraseñas. Veámoslo a continuación:

  • Estamos utilizando la extensión .When() para validar nuestra confirmación de contraseña solo cuando la contraseña no este vacía.
  • Con la extensión .Must() validamos que ambas contraseñas provistas por el usuario coincidan.

💡TIP:

La extensión .Must() que sirve para agregar validaciones sin tener que crear reglas. Es muy útil para cuando vas a validar cosas muy especificas y no quieres complicarte mucho.

Aplicando los cambios en nuestra UI

En nuestro XAML podemos tener algo similar a esto para enlazar las validaciones.

...
           <Entry Placeholder="Password" Text="{Binding Password.Value}" />
           <Label  Text="{Binding Password.Error}" TextColor="Red" />
...

Con esto tendríamos las validaciones trabajando para nosotros. Dime si no es realmente fácil.

Conclusiones

Puedes ver todo el código aquí.

De igual manera, los invito a que hagan estas validaciones sin la librería Plugin.ValidationRules para que puedan notar la diferencia y lo mucho que esta nos ayuda.

Nada disfruten. Si quieren mas tips como estos déjenmelo saber en los comentarios o en mi twitter, estoy siendo muy activo por allá.

Recuerden que sus interacciones son las que me ayudan a saber por donde dirigir el contenido. Al final, la idea es ayudar lo mas que podamos.

Espero que este video les sea de utilidad. Un abrazo, y hasta la próxima.

¿Qué opinas de este contenido?
 
Luis Matos

Luis Matos

I help professionals and companies to create value solutions. I am a Systems Engineer, blockchain executive, and international mobile application speaker. Founder of the Malla Consulting Agency and several international technology communities.
Suscribirte
Notificar de
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

Buscar en el sitio