Validation d'authentification Discourse

|||
-|-|-|
:discourse2: | Résumé | Discourse Authentication Validations permet d’ajouter des validations personnalisées à un champ utilisateur pour basculer l’affichage des champs utilisateur sur la modale d’inscription.
:hammer_and_wrench: | Lien du dépôt | \u003chttps://github.com/discourse/discourse-authentication-validations\u003e
:open_book: | Guide d’installation | Comment installer des plugins dans Discourse

:information_source: À propos

Discourse Authentication Validations ajoute la possibilité d’ajouter des validations personnalisées à un champ utilisateur.

Les champs utilisateur personnalisés n’ont aucun type de validation fourni par le cœur, en dehors de la détection d’une valeur vide pour un champ requis. Ce plugin ajoute la possibilité de définir une expression régulière, par champ utilisateur, qui sera ensuite vérifiée par rapport à la valeur d’entrée fournie.

De plus, ce plugin ajoute la possibilité de basculer l’affichage des champs utilisateur sur la modale d’inscription. Cela vous permet de « chaîner » les champs utilisateur, de sorte qu’un champ utilisateur ne s’affiche que si un champ utilisateur précédent a une valeur spécifique.

:building_construction: Configuration de base

1. Activer le plugin

Le plugin Discourse Authentication Validations peut être activé soit par le basculeur, soit à partir de ses paramètres, tous deux accessibles depuis votre page admin/plugins.

2. Ajouter une validation personnalisée à un champ utilisateur

Une fois le plugin Discourse Authentication Validations activé, vous verrez une case à cocher \u003ckbd\u003eInclure des validations personnalisées\u003c/kbd\u003e en bas de votre formulaire de champ utilisateur.

Lorsqu’elle est cochée, elle affichera trois champs supplémentaires :

  1. Expression régulière de validation de la valeur
  2. Valeurs d’affichage
  3. Champs utilisateur cibles

:closed_lock_with_key: Ajout d’une validation personnalisée

Incluez une expression régulière valide dans le champ Expression régulière de validation de la valeur :

\u003cimg width="729" alt="Screenshot 2024-06-05 at 11 18 20 PM" src="upload://sf3eZUtDLXlzXP9vw3HqCAmoZbQ.png"\u003e

La valeur du champ utilisateur dans le formulaire d’inscription sera désormais testée par rapport à l’expression régulière que vous avez incluse. Si l’entrée ne répond pas aux normes de votre expression régulière personnalisée, le formulaire d’inscription ne sera pas soumis.

\u003csmall\u003eAucune valeur (repose sur la validation de formulaire par défaut)\u003c/small\u003e
\u003cimg width="291" alt="Screenshot 2024-06-05 at 11 07 04 PM" src="upload://xQTYDASgAsmIE0nTlO0vGh5CFL3.png"\u003e

\u003csmall\u003eValeur incorrecte\u003c/small\u003e
\u003cimg width="282" alt="Screenshot 2024-06-05 at 11 07 40 PM" src="upload://yomkBUMLdjFPjdHFTJCpchPV1jq.png"\u003e

\u003csmall\u003eValeur correcte\u003c/small\u003e
\u003cimg width="293" alt="Screenshot 2024-06-05 at 11 08 02 PM" src="upload://jv23nMcMYIaAI4B4MJAcZUlF6V1.png"\u003e

:link: Chaînage des champs utilisateur

Premièrement, incluez une valeur Valeurs d'affichage sur un champ utilisateur.

Lorsqu’un champ utilisateur a une valeur Valeurs d'affichage incluse, il surveillera la valeur de l’entrée attachée jusqu’à ce que la valeur de l’entrée corresponde à N’IMPORTE QUELLE des Valeurs d'affichage. Il basculera alors la visibilité de tous les Champs utilisateur cibles inclus, les rendant visibles.

Deuxièmement, ajoutez une valeur Champs utilisateur cibles.

Dans la liste déroulante Champs utilisateur cibles, vous verrez une liste de tous les champs utilisateur disponibles. Tout champ utilisateur que vous sélectionnez verra sa visibilité basculée par les valeurs correspondantes dans Valeurs d'affichage.

:hammer_and_wrench: Chaînage avancé

Vous pouvez chaîner les champs utilisateur en ajoutant des validations personnalisées à plusieurs champs utilisateur.

Par exemple, supposons que nous ayons trois champs utilisateur avec les valeurs données :

Nom Validation personnalisée activée Valeurs d’affichage Champs utilisateur cibles
Entrée Un true afficher-deuxieme-entree Entrée Deux
Entrée Deux true afficher-troisieme-entree Entrée Trois
Entrée Trois false

L’Entrée Deux et l’Entrée Trois seront masquées par défaut car elles sont des « enfants » de l’Entrée Un. Lorsque la valeur d'affichage de afficher-deuxieme-entree est ajoutée à l’Entrée Un, l’Entrée Deux sera affichée, mais l’Entrée Trois restera masquée. Elle restera masquée jusqu’à ce que l’Entrée Deux ait la valeur de afficher-troisieme-entree.

Avec la bonne combinaison de Valeurs d’affichage et de Classes cibles, vous pouvez imbriquer infiniment des champs utilisateur les uns sous les autres.

18 « J'aime »

Bonjour @isaac.

J’adore ce plugin, c’est exactement ce dont j’ai besoin ! Est-il toujours maintenu ? J’ai des problèmes avec la fonctionnalité de “chaînage”.

J’ai suivi l’exemple ci-dessus en utilisant :

Mais il affiche tous les champs par défaut… Je m’excuse si j’ai manqué quelque chose dans la documentation !

1 « J'aime »

Mes excuses pour cela - le plugin fonctionne. Cependant, il ne fonctionne pas si vous visualisez via un lien d’inscription par « invitation ». Il fonctionne si vous utilisez une page d’inscription publique.

Cela pourrait être une fonctionnalité intéressante d’avoir la logique fonctionnant à la fois pour les inscriptions par invitation et publiques !

Excellent travail avec le plugin !

5 « J'aime »

Je suis tout à fait d’accord. @tobiaseigen si nous adoptions ce plugin comme une fonctionnalité plus large, nous voudrions que la logique fonctionne aux deux endroits (public/invitation) comme l’a souligné @kravitsjacob.

2 « J'aime »

Bonjour @isaac. Merci encore pour ce plugin incroyable - il m’a vraiment ouvert tant d’opportunités de discussion.

J’ai rencontré un petit bug - j’ai remarqué que les réponses aux questions sont enregistrées, même si une question est masquée. Cela a conduit à quelques situations involontaires où les utilisateurs soumettent des réponses qui ne devraient pas vraiment être possibles (d’où notre désir de masquer les questions en premier lieu). Ce comportement provoque également une autre situation où, lorsqu’une question est doublement imbriquée, elle apparaît toujours même si la réponse parente a été désélectionnée (car il pense toujours que la réponse déclencheuse est sélectionnée). Je sais que cette description est un peu vague, voici donc un gif qui met en évidence ce comportement :

auth null bug

Je pense que la correction souhaitée serait de réinitialiser les réponses à la valeur nulle une fois qu’elles ne sont plus visibles. Cela pourrait également être un comportement « opt-in » configurable par la personne qui configure le formulaire - je peux imaginer différentes philosophies quant à la persistance des réponses lors de la descente dans ces arbres.

Pourriez-vous implémenter cela ? :pray:

5 « J'aime »

Merci pour votre réponse détaillée ! Je vais examiner cela la semaine prochaine :slight_smile:

3 « J'aime »

J’ai eu l’occasion de regarder ces problèmes aujourd’hui :slight_smile:

Veuillez lire la description de la PR pour plus de détails !

3 « J'aime »

Il est actuellement impossible d’avoir un champ requis facultatif.

J’ai un champ « Industrie » et chaque fois que « Autre » est sélectionné, le champ « Autre industrie » apparaît.

Mais lorsque je rends le champ « Autre industrie » obligatoire, je ne peux pas soumettre le formulaire lorsque ce champ est masqué.

Lorsque je démasque manuellement la div, vous pouvez voir qu’elle exige cette saisie, même si le formulaire est masqué.

Lorsque je sélectionne « Autre », saisis une valeur, puis sélectionne une autre industrie pour que la saisie soit à nouveau masquée, je peux soumettre le formulaire. Et ensuite, la même situation se produit comme l’a souligné @kravitsjacob : la valeur du champ « Autre industrie » est enregistrée dans le profil de l’utilisateur, même si « Industrie » n’est pas défini sur « Autre ».

Admin utilisateur :

3 « J'aime »

Bonjour @RGJ, avez-vous réussi à résoudre le problème avec les champs obligatoires ? J’ai le même problème.
@isaac y a-t-il une solution de contournement pour cela ? J’ai des champs qui devraient être obligatoires au moment où la condition pour les rendre visibles est remplie.

Non, je n’ai pas eu de nouvelles à ce sujet et je n’y ai moi-même pas consacré de temps.

@RGJ, merci pour la réponse rapide.
Je viens de créer une PR sur le dépôt original avec une correction qui devrait résoudre le problème.
Le principal défi ici était le fait que vous avez deux endroits où la validation s’exécute, le Frontend et le Backend, j’ai donc dû mettre en œuvre une solution pour chacun séparément et m’assurer qu’ils fonctionnent comme prévu.
J’espère que cela aidera quelqu’un à l’avenir.