This guide explains how to create and configure custom user fields in Discourse, including how to add them to the signup form, user profiles, and user directory.
Required user level: Administrator
Custom user fields allow you to collect additional information from your users beyond the standard profile fields. These fields can be displayed on user cards, user summary pages, and even retrieved using the Data Explorer plugin. This guide will walk you through the process of creating and configuring custom user fields.
Adding a user field
Go to Admin > Community > User Fields (discourse.example.com/admin/config/user-fields).
If you haven’t created any user fields yet, you’ll see this screen:
Optional - Optional fields may be left empty by users
For all users - When a field is required by all users, every account, including logged on users will be forced to fill it. This is very useful for cases such as a terms-of-service (ToS) requirement.
On signup - All new account will be required to fill the field.
Additionally, at the bottom of the creation form, you’ll find these options:
Editable after signup: Allows users to update the field from their profile page
Required at signup: Makes the field mandatory during account creation
Show on public profile: Displays the field value on the user’s summary page
Show on user card: Shows the field value on the user card
Searchable: Enables searching for users based on this field’s value in the user directory
Show on public profile
When enabled, the field value will be shown on the user’s profile page:
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.