Este guia explica como criar e configurar campos de usuário personalizados no Discourse, incluindo como adicioná-los ao formulário de inscrição, perfis de usuário e diretório de usuários.
Nível de usuário necessário: Administrador
Os campos de usuário personalizados permitem que você colete informações adicionais de seus usuários além dos campos de perfil padrão. Esses campos podem ser exibidos em cartões de usuário, páginas de resumo de usuário e até mesmo recuperados usando o plugin Data Explorer. Este guia o guiará pelo processo de criação e configuração de campos de usuário personalizados.
Adicionando um campo de usuário
Vá para Admin > Comunidade > Campos de Usuário (discourse.example.com/admin/config/user-fields).
Se você ainda não criou nenhum campo de usuário, verá esta tela:
O tipo de campo determina o campo de entrada que os usuários verão no formulário de inscrição. Escolha com base no tipo de informação que você está coletando:
Campo de texto
Use para perguntas curtas com muitas respostas possíveis (ex: “Em qual empresa você trabalha?”)
Exibido como uma entrada de texto HTML de linha única
Opcional - Campos opcionais podem ser deixados em branco pelos usuários
Para todos os usuários - Quando um campo é exigido por todos os usuários, toda conta, incluindo usuários logados, será forçada a preenchê-lo. Isso é muito útil para casos como um requisito de termos de serviço (ToS).
Na inscrição - Todas as novas contas serão obrigadas a preencher o campo.
Além disso, na parte inferior do formulário de criação, você encontrará estas caixas de seleção de preferência:
Editável após a inscrição: Permite que os usuários atualizem o campo a partir de sua página de perfil
Mostrar no perfil público: Exibe o valor do campo na página de resumo do usuário
Mostrar no cartão de usuário: Exibe o valor do campo no cartão de usuário
Pesquisável: Permite a busca por usuários com base no valor deste campo no diretório de usuários
Mostrar no formulário de inscrição: Controla se o campo aparece no formulário de inscrição. Isso é ativado automaticamente (e não pode ser desativado) quando o requisito do campo é “Para todos os usuários” ou “Na inscrição”, ou quando o campo não é editável após a inscrição.
Mostrar no perfil público
Quando ativado, o valor do campo será exibido na página de perfil do usuário:
Hmm. Isso é interessante. Acho que há uma correção chegando para o problema Missing images at Meta.discourse.org, então espero que seja resolvido por isso.
Existe uma configuração que preciso modificar para especificar o comprimento máximo de um campo de usuário personalizado? No momento, neste campo “Teste” que criei como um campo de usuário de teste, não consigo inserir nem mesmo um caractere no meu perfil de usuário (ou mesmo “Teste”, como mostrado).
Como as URLs são texto, o campo de texto tecnicamente funciona, @Vaping_Community. No entanto, você pode estar pedindo detalhes adicionais, como validação de valor ou similar.
Você pode pesquisar ou criar um tópico de Feature com o que você tem em mente.
Note que se você quiser incorporar um link em um dos campos de usuário personalizados, você precisa usar a sintaxe HTML! <a> href="url">texto do link</a>
Por exemplo, para reconhecer as diretrizes/políticas da comunidade:
É possível vincular uma reivindicação personalizada do meu Auth0 SSO a um campo personalizado? Atualmente, o usuário insere as informações do campo no Auth0 e, em seguida, precisa inseri-las uma segunda vez ao se registrar. Gostaria que o valor fosse mapeado, se possível.
Existe uma maneira de verificar o nome do campo no banco de dados? Por exemplo, temos um campo de nome, tentei custom.firstname, custom.first_name e custom.firstName, nenhum dos quais resultou no preenchimento dos campos na tela de cadastro.
Verifiquei os logs de erro para confirmar que os campos de token estão chegando como mostrado acima.
A sintaxe precisa ser custom.user_field_x, onde x é o ID numérico do campo mostrado em /admin/config/user-fields/{x}/edit.
Esse recurso de mapeamento não está disponível diretamente no plugin Auth0.
Dito isso, ainda existem opções para alcançar o que você está descrevendo:
criar um componente de tema. Você pode adicionar um pequeno script front-end que sincroniza automaticamente um campo de usuário personalizado do Discourse com um valor já armazenado no Auth0. Por exemplo, quando um usuário faz login e o campo está vazio, o script pode chamar um endpoint seguro (uma pequena função de nuvem) que busca o valor do campo do Auth0 e atualiza o perfil do Discourse via API.
usar ferramentas de automação. Você também pode usar serviços de automação externos como Zapier ou Make para realizar essa sincronização fora do Discourse. A vantagem é que você não precisa escrever/manter código, apenas pagar pelo serviço de terceiros.
desenvolvimento personalizado. Podemos estender o próprio plugin Auth0 para suportar nativamente o mapeamento de claims personalizados em campos de usuário no login, ou construir um plugin personalizado que funcione em conjunto com o plugin Auth0.
Uma desvantagem clara da abordagem do componente de tema é que você precisaria escrever e manter o código personalizado, além de ter cuidado do ponto de vista de segurança para evitar introduzir possíveis bugs ou vulnerabilidades. Honestamente, não é uma solução que eu recomendaria para um site de produção como o seu.
Se eu estivesse em sua posição, eu tenderia mais para a segunda opção, usando ferramentas de terceiros, ou consideraria enviar uma solicitação de recurso ou solicitação de trabalho personalizado (dependendo da avaliação de nossos gerentes de projeto) para aprimorar o próprio plugin Auth0.
Se você estiver interessado em explorar a última opção, podemos continuar a discussão em particular.
Estou me perguntando se existe uma maneira menos complicada de reorganizar uma longa lista de campos de usuário do que clicar individualmente nas pequenas setas para movê-los para cima ou para baixo um passo de cada vez…?
Na visão geral da listagem de campos de usuário, não consigo ver como distinguir os campos que estão no formulário de inscrição e são obrigatórios (Je suis… Pays, por exemplo) daqueles que estão no formulário de inscrição, mas são opcionais (Mes attentes). Estou perdendo alguma coisa ou isso é uma falha? É bem complicado ter que editar o campo para ver se é opcional ou não. (Não tenho certeza se este é o lugar certo para isso, não sabia onde colocar.)
ah, isso é honestamente muito mais fácil para eu trabalhar!
Isso significa que posso simplesmente editar esse arquivo e pronto? Ele existe em algum lugar assim no meu servidor e onde eu o encontro?