Bouclier de lien externe – Confirmation de sortie et vérification de confiance

:information_source: Résumé Ce composant de thème ajoute une protection configurable pour les liens externes dans les messages cuits. Il applique des règles basées sur le niveau de confiance, des redirections optionnelles de connexion et d’information, des indicateurs visuels pour les domaines de confiance et une modale de confirmation de sortie personnalisable.
:eyeglasses: Aperçu Theme Creator
:hammer_and_wrench: Dépôt \u003chttps://github.com/VaperinaDEV/external-link-shield\u003e
:question: Guide d’installation Comment installer un thème ou un composant de thème
:open_book: Nouveau sur les thèmes Discourse ? Guide du débutant pour utiliser les thèmes Discourse

Installer ce composant de thème

Bonjour :waving_hand:

J’aimerais partager un Composant de Thème qui ajoute un contrôle granulaire sur les liens externes dans les messages cuits, combinant :

  • un contrôle d’accès basé sur le niveau de confiance
  • une protection pour les utilisateurs anonymes
  • une modale de confirmation de sortie personnalisée
  • et des indicateurs visuels pour les domaines de confiance par rapport aux domaines inconnus

Ce composant est conçu pour les communautés où les liens externes peuvent avoir des implications légales, de sécurité ou de confiance.


:sparkles: Fonctionnalités

:gear: Règles de niveau de confiance configurables

Tous les comportements basés sur le niveau de confiance sont entièrement configurables via les paramètres du thème.

Vous pouvez activer ou désactiver indépendamment :

  • le blocage des utilisateurs anonymes
  • le remplacement d’information pour TL0
  • l’exigence de révélation manuelle pour TL1
  • la modale de confirmation de sortie pour les niveaux de confiance supérieurs

Cela permet au composant de s’adapter à des politiques communautaires très différentes, allant d’un blindage strict des liens à une friction minimale pour l’utilisateur.

:locked_with_key: Liens externes conscients du niveau de confiance

Les liens externes se comportent différemment en fonction du niveau de confiance de l’utilisateur :

  • Utilisateurs anonymes
    • Les liens externes sont remplacés par un lien de connexion ou une URL personnalisée définie dans les paramètres.
  • TL0
    • Les liens sont remplacés par une redirection configurable, par exemple un sujet expliquant les niveaux de confiance ou toute autre URL définie dans les paramètres.
  • TL1
    • Les liens nécessitent une révélation manuelle (cliquer pour voir), puis cliquer sur le lien affiche la modale de confirmation de sortie.
  • TL2+
    • Les liens se comportent normalement mais affichent toujours une modale de confirmation de sortie.

:door: Modale de confirmation de sortie

Avant de quitter le forum, les utilisateurs voient une modale qui :

  • Indique clairement qu’ils quittent la communauté
  • Affiche l’URL de destination complète dans des balises \u003ccode\u003e
  • Respecte la préférence de l’utilisateur external_links_in_new_tab

Ceci est particulièrement utile pour :

  • les communautés soumises à des contraintes de conformité
  • l’atténuation du phishing
  • l’éducation des utilisateurs moins expérimentés


:magnifying_glass_tilted_left: Comportement basé sur le domaine via les paramètres

Le composant introduit deux paramètres de thème :

internal_domains:
  type: list
  default: ""
  description: "Vos domaines de forum et CDN (ex: example.com|example-cdn.com). Ceux-ci n'auront AUCUNE icône et AUCUNE modale."

excluded_domains:
  type: list
  default: ""
  description: "Domaines externes de confiance (ex: youtube.com|google.com). Ceux-ci afficheront une icône de Cadenas mais ignoreront la modale/le blindage."
  • Domaines internes
    • Traités comme internes → pas d’icône, pas de modale
  • Domaines exclus (de confiance)
    • Affichent une icône de cadenas :locked:
    • Sautent le contrôle du niveau de confiance et la modale
  • Tous les autres liens externes
    • Affichent une icône de lien externe
    • Sont contrôlés et/ou confirmés en fonction du niveau de confiance

:artist_palette: Indicateurs visuels (SCSS)

Les icônes sont ajoutées purement via CSS :

  • Liens externes inconnus → icône external-link
  • Liens externes de confiance → icône de cadenas (couleur succès)

Ceci maintient le DOM propre et évite l’injection d’icônes basée sur JS.

Cette capture d’écran montre comment le composant distingue visuellement :

  • Domaines exclus : liens externes de confiance (icône de cadenas, pas de confirmation de sortie),
  • Domaines internes : liens internes (pas d’icône, pas de confirmation de sortie),
  • liens externes inconnus (icône external-link avec confirmation de sortie).

:pushpin: Cas d’utilisation

Ce composant est utile si vous souhaitez :

  • Protéger les utilisateurs contre les liens externes dangereux ou trompeurs
  • Éduquer les nouveaux utilisateurs avant de les laisser quitter le forum
  • Appliquer la progression de la confiance de la communauté
  • Ajouter des mentions légales/de conformité sans nuire à l’expérience utilisateur
6 « J'aime »

Composant de thème fantastique !!!

Nous avons en fait construit quelque chose de similaire où nous masquons également les badges de nombre de clics et les remplaçons par des badges vérifiés/danger.

Nous l’avons principalement utilisé pour nos vendeurs et commerçants vérifiés/de confiance avec lesquels nous avons un partenariat d’affiliation.

De plus, notre fenêtre contextuelle affiche également des codes de réduction gérés via l’éditeur de paramètres d’objet du composant de thème.

2 « J'aime »