Projet

Général

Profil

Development #72015

Validation "téléphone" accepte à peu près n'importe quoi

Ajouté par Marie Kuntz il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
05 décembre 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Quand on applique la validation "numéro de téléphone" sur un champ, ce champ accepte n'importe quel format de chiffres, y compris juste un caractère (tester ici : https://demarches-mkuntz.test.entrouvert.org/formulaires-de-test/test-validation-telephone/, entrer 0 sur le 2e champ).
Le problème c'est qu'on utilise assez souvent ce champ à la place de téléphone France car potentiellement les usagers peuvent faire une démarche sans avoir de numéro fr.
Finalement cette validation ne sert à rien à part vérifier qu'il y a des chiffres.
Je serais pour l'enlever, ou l'améliorer en ajoutant l'indicatif étranger + validation du format et en testant, si absence d'indicatif, si le numéro est français.

Historique

#1

Mis à jour par Thomas Noël il y a plus d'un an

Actuellement cette validation permet juste d'éliminer les trucs improbables, c'est en réalité derrière cette simple regex :

\+?[-\(\)\d\.\s/]+

On accepte même les parenthèses, points, espaces, tabulations, etc.

Mais en fait, la définition générale de ce qu'est « un numéro de téléphone », on n'aura pas mieux. C'est toujours contextuel, ça dépend d'où on parle (du pays, de la zone, etc.).

Sans doute faut-il bien faire comprendre ça aux utilisateurs de Publik. Je suis pas super fan du retrait, cependant.

Si on voulait un véritable champ "numéro de téléphone" il faudrait un champ explicite (genre comme pour les courriels), et pas juste une validation, car le widget serait à adapter : d'abord demander l'indication, puis la partie locale, et vérifier l'ensemble avec Google libphonenumbers.

#2

Mis à jour par Paul Marillonnet il y a plus d'un an

Thomas Noël a écrit :

Si on voulait un véritable champ "numéro de téléphone" il faudrait un champ explicite (genre comme pour les courriels), et pas juste une validation, car le widget serait à adapter : d'abord demander l'indication, puis la partie locale, et vérifier l'ensemble avec Google libphonenumbers.

Pour le travail côté w.c.s. sur l’authentification avec numéro de téléphone mobile dans Publik, on a déjà resserré un peu les vis de la validation de numéro de téléphone français, c’est l’objet de ce patch.
Peut-être qu’on peut en faire de même pour la validation "numéro de téléphone" ?

#3

Mis à jour par Frédéric Péters il y a plus d'un an

Ça permet aussi de poser un attribut type=tel sur le champ, qui indique au clavier du mobile d'apparaitre avec les chiffres (et plus généralement à l'accessibilité).

#4

Mis à jour par Paul Marillonnet il y a plus d'un an

Pour le travail côté w.c.s. sur l’authentification avec numéro de téléphone mobile dans Publik, on a déjà resserré un peu les vis de la validation de numéro de téléphone français, c’est l’objet de ce patch.
Peut-être qu’on peut en faire de même pour la validation "numéro de téléphone" ?

FWIW ça pourrait être quelque chose comme ça (moins permissif que ce que fait actuellement la regex après élimination des caractères invalides) :

def validate_phone(string_value):
    pn = None
    try:
        pn = phonenumbers.parse(string_value)
    except phonenumbers.NumberParseException:
        try:
            pn = phonenumbers.parse(string_value, 'FR')  # FR ou bien un setting w.c.s. (?)
        except phonenumbers.NumberParseException:
            return False
    return phonenumbers.is_valid_number(pn)

#5

Mis à jour par Thomas Noël il y a plus d'un an

Peut-être qu’on peut en faire de même pour la validation "numéro de téléphone" ?

Pour moi tout le problème est sur « # FR ou bien un setting w.c.s. (?) ». Ce settings ne peut pas être général, il dépend de la personne : on ne sait pas depuis quel endroit la personne tape son numéro.

Oui, je vais rester assez pénible sur ce dossier, je ne suis pas pour essayer d'ajouter de magie :) La détection d'un numéro de téléphone "at large" dans un simple champ texte, ça ne me semble pas possible.

#6

Mis à jour par Paul Marillonnet il y a plus d'un an

Pour moi tout le problème est sur « # FR ou bien un setting w.c.s. (?) ». Ce settings ne peut pas être général, il dépend de la personne : on ne sait pas depuis quel endroit la personne tape son numéro.

Oui, je vais rester assez pénible sur ce dossier, je ne suis pas pour essayer d'ajouter de magie :) La détection d'un numéro de téléphone "at large" dans un simple champ texte, ça ne me semble pas possible.

Ok, fair enough, objection retenue :)

#11

Mis à jour par Marie Kuntz il y a plus d'un an

  • Statut changé de Nouveau à Rejeté

Formats disponibles : Atom PDF