Escudo de Link Externo – Confirmação de Saída e Validação de Confiança

:information_source: Resumo Este componente de tema adiciona proteção configurável para links externos em posts cozidos. Ele aplica regras baseadas no nível de confiança, redirecionamentos opcionais de login e informação, indicadores visuais para domínios confiáveis e um modal de confirmação de saída personalizável.
:eyeglasses: Prévia Theme Creator
:hammer_and_wrench: Repositório \u003chttps://github.com/VaperinaDEV/external-link-shield\u003e
:question: Guia de Instalação Como instalar um tema ou componente de tema
:open_book: Novo nos Temas do Discourse? Guia para iniciantes sobre como usar Temas do Discourse

\u003c!-- Preencha "repoName" e "repoURL" para o botão de instalação automática –\u003e

Instalar este componente de tema

Olá :waving_hand:

Gostaria de compartilhar um Componente de Tema que adiciona controle granular sobre links externos em posts cozidos, combinando:

  • controle de acesso baseado no nível de confiança
  • proteção para usuários anônimos
  • um modal de confirmação de saída personalizado
  • e indicadores visuais para domínios confiáveis versus desconhecidos

Este componente é projetado para comunidades onde links externos podem carregar implicações legais, de segurança ou de confiança.


:sparkles: Funcionalidades

:gear: Regras de nível de confiança configuráveis

Todos os comportamentos baseados em nível de confiança são totalmente configuráveis através das configurações do tema.

Você pode habilitar ou desabilitar independentemente:

  • bloqueio de usuários anônimos
  • substituição de informação para TL0
  • requisito de revelação manual para TL1
  • modal de confirmação de saída para níveis de confiança mais altos

Isso permite que o componente se adapte a políticas de comunidade muito diferentes, desde um blindamento de links rigoroso até um atrito mínimo para o usuário.

:locked_with_key: Links externos cientes do nível de confiança

Links externos se comportam de maneira diferente com base no nível de confiança do visualizador:

  • Usuários anônimos
    • Links externos são substituídos por um link de login ou uma URL personalizada definida nas configurações.
  • TL0
    • Links são substituídos por um redirecionamento configurável, por exemplo, um tópico explicando os níveis de confiança ou qualquer outra URL definida nas configurações.
  • TL1
    • Links exigem revelação manual (clicar para ver), então clicar no link mostra o modal de confirmação de saída.
  • TL2+
    • Links se comportam normalmente, mas sempre mostram um modal de confirmação de saída.

:door: Modal de confirmação de saída

Antes de sair do fórum, os usuários veem um modal que:

  • Afirma claramente que estão deixando a comunidade
  • Mostra a URL de destino completa em tags \u003ccode\u003e
  • Respeita a preferência external_links_in_new_tab do usuário

Isso é especialmente útil para:

  • comunidades com alta exigência de conformidade
  • mitigação de phishing
  • educar usuários menos experientes


:magnifying_glass_tilted_left: Comportamento baseado em domínio via configurações

O componente introduz duas configurações de tema:

internal_domains:
  type: list
  default: ""
  description: "Seus domínios do fórum e CDN (ex: exemplo.com|exemplo-cdn.com). Estes NÃO terão ícone NEM modal."

excluded_domains:
  type: list
  default: ""
  description: "Domínios externos confiáveis (ex: youtube.com|google.com). Estes mostrarão um ícone de CADEADO, mas pularão o modal/blindagem."
  • Domínios internos
    • Tratados como internos → sem ícone, sem modal
  • Domínios excluídos (confiáveis)
    • Mostram um ícone de cadeado :locked:
    • Ignoram o controle de nível de confiança e o modal
  • Todos os outros links externos
    • Mostram um ícone de link externo
    • São controlados e/ou confirmados dependendo do nível de confiança

:artist_palette: Indicadores visuais (SCSS)

Ícones são adicionados puramente via CSS:

  • Links externos desconhecidos → ícone external-link
  • Links externos confiáveis → ícone de cadeado (cor de sucesso)

Isso mantém o DOM limpo e evita a injeção de ícones baseada em JS.

Esta captura de tela mostra como o componente distingue visualmente entre:

  • Domínios excluídos: links externos confiáveis (ícone de cadeado, sem confirmação de saída),
  • Domínios internos: links internos (sem ícone, sem confirmação de saída),
  • links externos desconhecidos (ícone external-link com confirmação de saída).

:pushpin: Casos de uso

Este componente é útil se você deseja:

  • Proteger usuários de links externos inseguros ou enganosos
  • Educar novos usuários antes de permitir que saiam do fórum
  • Aplicar a progressão de confiança da comunidade
  • Adicionar avisos legais/de conformidade sem quebrar a UX
6 curtidas

Componente de Tema Fantástico!!!

Nós, na verdade, construímos algo semelhante onde também ocultamos os emblemas de contagem de cliques e os substituímos por emblemas de verificado/perigo.

Nós o usamos principalmente para nossos fornecedores e comerciantes verificados/confiáveis com quem temos uma parceria de afiliados.

Além disso, nosso pop-up também exibe códigos de cupom que são gerenciados através do editor de configurações de Objeto do componente de tema.

2 curtidas