Campos de Usuário Ocultos

:information_source: Resumo Cria campos de usuário que são visíveis apenas para grupos especificados
:hammer_and_wrench: Repositório discourse-hidden-user-fields
:question: Guia de Instalação Como instalar um tema ou componente de tema
:open_book: Novo em Temas do Discourse? Guia para iniciantes no uso de Temas do Discourse

← Preencha "repoName" e "repoURL" para o botão de instalação automática →

Instalar este componente de tema

Descrição Detalhada

:warning: Use cautela com dados sensíveis nestes campos. Os campos não são encontrados no código-fonte, mas podem ser visíveis se algo der errado :warning:

Tenho dois usuários, derek_test (à esquerda) e anon9 (à direita). Os campos ID e Empresa estão ambos preenchidos em seus perfis, mas apenas um é visível para o outro. derek_test pode ver ID e anon9 pode ver Company.

Perfis de Usuário

Cartões de Usuário

Pesquisa

Neste caso, anon9 (à direita) pode ver a empresa e pesquisar por Acme.


Configurações

CleanShot 2025-11-13 at 16.17.43

  • Nome do Campo: insira o nome do campo de usuário personalizado (um por objeto)
  • Grupos Permitidos: Selecione os grupos permitidos na lista

Pré-requisitos

Isso utiliza Campos de Usuário Personalizados. Essas configurações ditam onde os campos serão visíveis:

:white_check_mark: Revise essas configurações assim que os campos forem preenchidos ou crie permissões com antecedência, para que esses campos nunca sejam expostos.

6 curtidas

O que os usuários que não estão logados veem? Então, se o campo só é visível para administradores, eu esperaria que os usuários não pudessem vê-lo mesmo após o logout, correto?


Há alguma razão pela qual você escolheu o campo de texto para a configuração de grupo em vez de um group_list? É um pouco mais conveniente para inserir grupos porque você pode selecioná-los em vez de digitar o nome. No entanto, funciona com o ID, então você tem que mudar um pouco o código. Mas ainda funciona mesmo se você renomear o grupo.

1 curtida

Boa observação, acabei de atualizá-lo para levar isso em consideração. Posso confirmar que usuários deslogados não veem o campo.

Serei honesto e direi que fiz isso com o Claude Code, mas ele disse que o tipo group_list não está disponível em um editor de objetos — apenas como uma configuração de nível superior.

Então teria que ser algo assim, mas um número fixo de campos disponíveis

CleanShot 2025-11-13 at 13.12.21

1 curtida

Isso é interessante. Com base na documentação, eu esperava que também suportasse algo assim

2 curtidas

Obrigado por apontar isso! Consegui modificar as configurações do grupo com base nessa documentação!

Atualizarei os detalhes acima para refletir a alteração.

2 curtidas

Huh.. Embora as configurações no editor de objetos tenham aceitado list_type:group, não consegui passar de um erro:

CleanShot 2025-11-13 at 13.52.29

Tentei algumas transformações diferentes, mas não consegui avançar. O veredito é que “O tipo groups em esquemas de objetos é documentado, mas a interface do usuário não é implementada no frontend.”.

2 curtidas

Eu também vi esse erro, mas depois que usei o botão de reset para redefinir toda a configuração do objeto, o erro não voltou :woman_shrugging:

Então, tudo certo agora
Screenshot_20251113_195748_Firefox

Talvez ele não tenha gostado de mudar o tipo de configuração em uma configuração existente

2 curtidas

Eu consigo ver isso sendo muito útil!

1 curtida

OI, @putty!

Tenho alguns problemas com isso:

Preciso ocultar os campos de usuário de todos os usuários que não estão no grupo Usuário - parece ser o caso?

  1. Se o próprio usuário não estiver neste grupo, ele também não poderá ver esses campos em sua própria conta - está correto?
  2. Outros usuários continuarão sem ver os campos se não forem Administrador ou Moderador!
  3. Aliás, Moderador e Administrador também deveriam estar neste Grupo para ver os Campos, ocultos por este Tema.

Você pode me ajudar com isso?

Olá Alexey,

Você pode detalhar? Eu não vejo o problema. Atualmente, ele tem 1 e 2. Sua solicitação é para ocultar campos de mods/admins também? Para sua informação, os administradores teriam que criar o campo inicialmente.

Olá, obrigado!

Acabei de testar novamente no meu repositório local do GitHub mais recente e na solução hospedada com a compilação mais recente - apenas a categoria Administrador é afetada e pode ver o campo Oculto se for membro de um grupo que tem permissão para ver esse campo. Mesmo o acesso de Moderador (como eu pensei antes, não funciona)

O caso:

  1. Dois usuários, admin e Alex_1
  2. Grupo de usuário L2_verified
  3. Campo de usuário - Nome Completo (Para todos os usuários, todos Ligado, apenas pesquisável Desligado)
  4. Ambos os usuários têm nomes: Alex Admin e Alex
  5. Configurações do tema:
    Incluir componente nestes temas (Foundation, Horizon)
    Nome do campo: Nome Completo
    Grupos permitidos: L2_verified

Resultados:

  1. Nenhum dos dois é membro do L2_verified - ninguém vê o campo Nome Completo (nem o seu próprio Nome Completo)
  2. admin é membro do L2_verified - pode ver o Nome Completo de Alex_1 (e seu próprio Nome Completo)
  3. Alex_1 é membro do L2_verified - não consegue ver o Nome Completo de si mesmo e do admin
  4. Quando concedi admin a Alex_1 - ele pode ver ambos os Nomes Completos - o seu e o do admin
1 curtida

Então… Parece que estamos bem? haha :sweat_smile:

1 curtida

Meu Antigravity com Gemini 3 Pro High encontrou a causa raiz:

Causa Raiz Identificada: O grupo

L2_verified

existe e

Alex_1

é um membro, MAS o Nível de Visibilidade do grupo está definido como 4 (Somente Staff/Proprietários).

Devido a essa configuração restritiva, o Discourse não informa ao navegador que

Alex_1

é membro deste grupo (a menos que ele também seja Staff/Admin). Portanto, o Componente de Tema verifica a lista, não encontra

L2_verified

e mantém o campo oculto.

Correção:

  1. Vá para GruposL2_verifiedGerenciarInteração.

  2. Mude Quem pode ver este grupo? para “Membros” ou “Todos”.

  3. Salve.

  4. Atualize como

    Alex_1
    

    (não-admin). Deve funcionar agora!

Mas, por enquanto, não é uma solução alternativa - a maioria dos nossos grupos está oculta de todos :frowning:

Olá @dereklputnam,

Obrigado por este ótimo componente! É uma base fantástica para gerenciar a privacidade do usuário no Discourse.

Desenvolvi um fork especializado de visibilidade bidirecional (recíproca) baseado no seu trabalho. Em nossa comunidade profissional, precisávamos de um modelo de “Confiança Mútua”, onde membros verificados podem ver os nomes reais/dados comerciais uns dos outros, mas permanecem completamente anônimos para o público em geral ou usuários não verificados.

Principais recursos deste fork:

  • Lógica Recíproca: Um campo é revelado apenas se tanto o visualizador quanto o proprietário do perfil pertencerem ao grupo autorizado.

  • Supervisão da Equipe: Administradores e moderadores mantêm visibilidade total para fins de segurança e moderação.

  • Autovisibilidade: Os usuários podem sempre ver seus próprios campos ocultos, mesmo que ainda não façam parte do grupo autorizado, para que possam gerenciar seu próprio perfil.

  • Privacidade Ponto a Ponto: Garante que mesmo usuários verificados não revelem sua identidade a alguém que não passou pelo mesmo nível de verificação.

Roteiro: Em atualizações futuras, planejo adicionar configurações de grupo granulares para definir exatamente quais grupos podem ver e ser vistos (por exemplo, permitir que o Grupo A veja o Grupo B, mas não o contrário).

Atualmente, estou finalizando a documentação e planejo publicar isso como uma variante autônoma de “Privacidade Avançada” em um tópico separado assim que obtiver acesso total à categoria Componentes de Tema.

Enquanto isso, se alguém precisar dessa lógica bidirecional, pode conferir aqui: GitHub: https://github.com/AirVetra/discourse-hidden-user-fields-bidirectional

Obrigado novamente pela inspiração!

1 curtida