Yup: Fazendo uma validação de confirmação de senha.

Brad Hick
2 min readSep 18, 2021

--

Iremos ver como usar essa ótima lib de validações para uma das tarefas mais comuns do nosso cotidiano.

Uma das tarefas mais comuns em qualquer sistema é a parte da criação de contas para ter acesso aos mesmos, e uma prática bastante comum pra evitar que os usuários tenham a certeza de que estão realmente utilizando a senha que eles desejam é adicionando uma confirmação de senha.

No artigo abaixo, já vimos as vantagens de usar o Yup e como ele pode facilitar ainda mais a nossa vida.

Agora vamos dar um passo a mais, e vamos fazer uma validação um pouco mais elaborada. Ao pensar em um formulário com os campos email, password e passwordConfirmation, podemos pensar primeiramente no seguinte schema:

import * as Yup from 'yup';

validationSchema: Yup.object({
email: Yup.string().required('Email is required'),
password: Yup.string().required('Password is required'),
passwordConfirmation: Yup.string().required('Password confirmation is required'),
});

Até então parece estar certo, pois todos esses campos são de fato obrigatórios, porém precisamos garantir que o que o usuário irá digitar no campo de password deve ser o mesmo digitado no passwordConfirmation.

Para isso usaremos dois recursos do Yup, o oneOf()e o ref() . O oneOf()faz com que a validação siga pelo menos um tipo específico a ser definido em uma lista que é passada como parâmetro, já o ref() retorna a referência de um item quando passado o nome do mesmo.

A solução para esse caso seria algo como o exemplo abaixo:

import * as Yup from 'yup';

validationSchema: Yup.object({
email: Yup.string().required('Email is required'),
password: Yup.string().required('Password is required'),
passwordConfirmation:
Yup.string()
.required('Password confirmation is required')
.oneOf([Yup.ref('password')], 'Passwords must match'),
});

Com isso conseguimos aplicar uma validação que supra todos os requisitos dessa tarefa.

Viu como foi fácil?

Abaixo vou deixar outros exemplos usando o yup pra aprofundar ainda mais os conhecimentos.

Bons estudos e muito sucesso!!!

--

--

Brad Hick

Um desenvolvedor iniciante buscando o seu Hakuna Matata.