Champs utilisateur masqués

:information_source: Résumé Créer des champs utilisateur visibles uniquement par des groupes spécifiés
:hammer_and_wrench: Dépôt discourse-hidden-user-fields
:question: Guide d’installation Comment installer un thème ou un composant de thème
:open_book: Nouveau aux thèmes Discourse ? Guide du débutant pour l’utilisation des thèmes Discourse

<!- Fill in “repoName” and “repoURL” for the automatic install button →

Installer ce composant de thème

Description détaillée

:warning: Faites preuve de prudence avec les données sensibles dans ces champs. Les champs ne sont pas trouvés dans la source, mais pourraient être visibles si quelque chose se casse :warning:

J’ai deux utilisateurs, derek_test (à gauche) et anon9 (à droite). Les champs ID et Société sont tous deux renseignés dans leurs profils, mais un seul est visible par l’autre. derek_test peut voir ID et anon9 peut voir Société.

Profils utilisateur

Cartes utilisateur

Recherche

Dans ce cas, anon9 (à droite) peut voir la société et rechercher Acme.


Paramètres

CleanShot 2025-11-13 at 16.17.43

  • Nom du champ : insérer le nom du champ utilisateur personnalisé (un par objet)
  • Groupes autorisés : Sélectionner les groupes autorisés dans la liste

Prérequis

Ceci utilise Champs utilisateur personnalisés. Ces paramètres dictent où les champs seront visibles :

:white_check_mark: Revoyez ces paramètres une fois les champs renseignés ou créez les autorisations à l’avance, afin que ces champs ne soient jamais exposés.

6 « J'aime »

Que voient les utilisateurs qui ne sont pas connectés ? Donc, si le champ n’est visible que par les administrateurs, je m’attendrais à ce que les utilisateurs ne puissent pas le voir même après s’être déconnectés, n’est-ce pas ?


Y a-t-il une raison pour laquelle vous avez choisi le champ texte pour le paramètre de groupe au lieu d’une liste de groupes (group_list) ? C’est un peu plus pratique pour entrer des groupes car vous pouvez les sélectionner au lieu de taper le nom. Cependant, cela fonctionne avec l’ID, vous devez donc modifier un peu le code. Mais cela fonctionne toujours même si vous renommez le groupe.

1 « J'aime »

Bonne remarque, je viens de le mettre à jour pour en tenir compte. Je peux confirmer que les utilisateurs déconnectés ne voient pas le champ.

Je vais être honnête et dire que j’ai fait cela avec Claude Code, mais il a dit que le type group_list n’est pas disponible dans un éditeur d’objets, seulement comme paramètre de niveau supérieur.

Donc, cela devrait ressembler à ceci, mais avec un nombre fixe de champs disponibles

CleanShot 2025-11-13 at 13.12.21

1 « J'aime »

C’est intéressant. D’après la documentation, je m’attendais à ce qu’elle prenne en charge quelque chose comme ça aussi

2 « J'aime »

Merci d’avoir signalé cela ! J’ai pu modifier les paramètres du groupe en me basant sur cette documentation !

Je mettrai à jour les détails ci-dessus pour refléter le changement.

2 « J'aime »

Hein.. Bien que les paramètres dans l’éditeur d’objets aient accepté list_type:group, je n’ai pas pu dépasser une erreur :

CleanShot 2025-11-13 at 13.52.29

J’ai essayé quelques transformations différentes mais je n’ai pas pu y arriver. Le verdict est que « Le type groups dans les schémas d’objets est documenté mais l’interface utilisateur n’est pas implémentée dans le frontend ».

2 « J'aime »

J’ai vu cette erreur aussi, mais après avoir utilisé le bouton de réinitialisation pour réinitialiser tous les paramètres de l’objet, l’erreur n’est pas revenue :woman_shrugging:

Donc tout va bien maintenant
Screenshot_20251113_195748_Firefox

Peut-être que cela n’a pas aimé le changement du type de paramètre sur une configuration existante

2 « J'aime »

Je vois que cela peut être très utile !

1 « J'aime »

Salut, @putty !

J’ai quelques problèmes avec ça :

Je dois masquer les champs utilisateur à tous les utilisateurs qui ne sont pas dans le groupe Utilisateur - semble que ce soit le cas ?

  1. Si l’utilisateur lui-même n’est pas dans ce groupe, il ne peut pas non plus voir ces champs sur son propre compte - est-ce normal ?
  2. Les autres utilisateurs continueront de ne pas voir les champs s’ils ne sont pas Administrateur ou Modérateur !
  3. Soit dit en passant, le Modérateur et l’Administrateur devraient également être dans ce groupe pour voir les champs masqués par ce Thème.

Pourriez-vous m’aider avec ça ?

Bonjour Alexey,

Pouvez-vous préciser ? Je ne vois pas le problème. Il a actuellement 1 et 2. Votre demande est-elle également de masquer les champs aux modérateurs/administrateurs ? Soit dit en passant, les administrateurs devraient créer le champ initialement.

Salut, merci !

Je viens de le tester à nouveau sur mon dépôt github local clair le plus récent et sur la solution hébergée avec la dernière version - seule la catégorie Admin est affectée et peut voir le champ Masqué si l’utilisateur est membre d’un groupe autorisé à voir ce champ. Même l’accès Modérateur (comme je le pensais auparavant, cela ne fonctionne pas)

Le cas :

  1. Deux utilisateurs, admin et Alex_1
  2. Groupe d’utilisateurs L2_verified
  3. Champ utilisateur - Nom complet (Pour tous les utilisateurs, tous Activé, seule la recherche Désactivée)
  4. Les deux utilisateurs ont des noms : Alex Admin et Alex
  5. Paramètres du thème :
    Inclure le composant sur ces thèmes (Foundation, Horizon)
    Nom du champ : Nom complet
    Groupes autorisés : L2_verified

Résultats :

  1. Aucun des deux n’est membre de L2_verified - personne ne voit le champ Nom complet (même son propre Nom complet)
  2. admin est membre de L2_verified - peut voir le Nom complet d’Alex_1 (et son propre Nom complet)
  3. Alex_1 est membre de L2_verified - ne peut pas voir son propre Nom complet ni celui d’admin
  4. Lorsque j’ai accordé admin à Alex_1 - il peut voir les deux Noms complets - le sien et celui d’admin
1 « J'aime »

Alors… On est bons ? haha :sweat_smile:

1 « J'aime »

Mon Antigravity avec Gemini 3 Pro High a trouvé la cause première :

Cause Première Identifiée : Le groupe

L2_verified

existe et

Alex_1

en est membre, MAIS le Niveau de Visibilité du groupe est défini sur 4 (Staff/Propriétaires uniquement).

En raison de ce paramètre restrictif, Discourse n’indique pas au navigateur que

Alex_1

est membre de ce groupe (à moins qu’il ne soit également Staff/Admin). Par conséquent, le Composant de Thème vérifie la liste, ne trouve pas

L2_verified

, et garde le champ masqué.

Correction :

  1. Allez dans GroupesL2_verifiedGérerInteraction.

  2. Changez Qui peut voir ce groupe ? à “Membres” ou “Tout le monde”.

  3. Sauvegardez.

  4. Actualisez en tant que

    Alex_1
    

    (non-admin). Cela devrait fonctionner maintenant !

Mais ce n’est pas une solution de contournement pour l’instant - la plupart de nos groupes sont cachés de tout le monde :frowning:

Bonjour @dereklputnam,

Merci pour cet excellent composant ! C’est une base fantastique pour gérer la confidentialité des utilisateurs sur Discourse.

J’ai développé une version spécialisée avec une visibilité bidirectionnelle (réciproque) basée sur votre travail. Dans notre communauté professionnelle, nous avions besoin d’un modèle de « Confiance Mutuelle » où les membres vérifiés peuvent voir les noms réels/données commerciales des autres, tout en restant complètement anonymes pour le grand public ou les utilisateurs non vérifiés.

Fonctionnalités clés de cette version :

  • Logique Réciproque : Un champ n’est révélé que si à la fois le spectateur et le propriétaire du profil appartiennent au groupe autorisé.

  • Supervision par le personnel : Les administrateurs et les modérateurs conservent une visibilité complète pour des raisons de sécurité et de modération.

  • Auto-visibilité : Les utilisateurs peuvent toujours voir leurs propres champs masqués, même s’ils ne font pas encore partie du groupe autorisé, afin de pouvoir gérer leur propre profil.

  • Confidentialité pair-à-pair : Cela garantit que même les utilisateurs vérifiés ne révèlent pas leur identité à quelqu’un qui n’a pas subi le même niveau de vérification.

Feuille de route : Dans les futures mises à jour, j’ai l’intention d’ajouter des paramètres de groupe granulaires pour définir exactement quels groupes peuvent voir et être vus (par exemple, permettre au Groupe A de voir le Groupe B, mais pas l’inverse).

Je suis actuellement en train de finaliser la documentation et prévois de publier ceci comme une variante autonome « Confidentialité Avancée » dans un sujet séparé une fois que j’aurai un accès complet à la catégorie Composants de Thème.

En attendant, si quelqu’un a besoin de cette logique bidirectionnelle, vous pouvez la consulter ici : GitHub : https://github.com/AirVetra/discourse-hidden-user-fields-bidirectional

Merci encore pour l’inspiration !

1 « J'aime »