Open ptsilva opened 3 years ago
@ptsilva realmente, o bug existe! Já sobre a correção, não acho que a gente deve validar sobre o input bruto, pois estaremos assumindo que o usuário nunca irá enviar informação inválida no request. Acho que a melhor solução aqui é especificar a sanitização em cada caso específico. Tenho em mente uma possível solução, mas preciso de algum tempo para implementar ela. Agradeço sua contribuição!
Obrigado pelo retorno @vicentimartins, acho que podemos pensar um pouco sobre essa questão, veja esse exemplo:
$request = ['cpf' => ' 258.727.290-49 '];
Meu entendimento nesse caso, é que sim, poderíamos aplicar um trim
e tornar o valor válido antes da validação ... Mas observe que a lib não deveria alterar o valor 'on the fly' na validação, pois ele não iria alterar o request original...
Dessa forma, passaria na validação e a aplicação ainda sim receberia um valor inválido/duvidoso.
Ou então, como saber se realmente o valor é válido? Pra realmente saber se ele é válido após a validação usando essa estratégia, a aplicação precisaria reaplicar a transformação (trim
) e então receber o valor correto.
Veja um caso de duas inputs que são aplicadas a regra de validação para CNH:
Ambos passam na validação, pois a chamada do método sanitize:
https://github.com/geekcom/validator-docs/blob/10b202192666a7105bb110977ebbb6ef84090f11/src/validator-docs/Rules/Cnh.php#L22
O sanitize altera o valor antes da valiação, porém, como ele não altera o próprio request (e nem faz sentido), a aplicação identifica como válido um valor que na verdade é inválido. Testei com CNH, mas com certeza deve ocorrer em todas as Rules que também utilizam o sanitize.
A correção é simples, a validação deve ser feita em cima da input bruta e não deve haver nenhuma transformação antes da validação.