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. Eso es interesante. Creo que hay una solución en camino para el problema de Missing images at Meta.discourse.org, así que espero que se resuelva con eso.
¿Hay alguna configuración que deba modificar para especificar la longitud máxima de un campo de usuario personalizado? En este momento, en este campo “Test” que creé como campo de usuario de prueba, no puedo introducir ni un solo carácter en mi perfil de usuario (ni siquiera “Test”, como se muestra).
Dado que las URL son texto, el campo de texto funciona técnicamente, @Vaping_Community. Sin embargo, es posible que esté solicitando detalles adicionales como validación de valor o similar.
Podría buscar o crear un tema de Feature con lo que tiene en mente.
¡Tenga en cuenta que si desea incrustar un enlace en uno de los campos de usuario personalizados, debe usar la sintaxis HTML! <a> href="url">texto del enlace</a>
Por ejemplo, para reconocer las directrices/políticas de la comunidad:
¿Puedo vincular un reclamo personalizado de mi Auth0 SSO a un campo personalizado? Actualmente, el usuario ingresa la información del campo en Auth0 y luego tiene que ingresarla una segunda vez al registrarse. Me gustaría que el valor se mapeara si es posible.
¿Hay alguna forma de verificar el nombre del campo en la base de datos? Por ejemplo, tenemos un campo de nombre, probé custom.firstname, custom.first_name y custom.firstName, ninguno de los cuales resultó en que los campos se poblaran en la pantalla de registro.
He revisado los registros de errores para confirmar que los campos del token están llegando como se muestra arriba.
La sintaxis debe ser custom.user_field_x, donde x es el ID numérico del campo que se muestra en /admin/config/user-fields/{x}/edit.
Esa función de mapeo no está disponible directamente en el plugin Auth0.
Dicho esto, todavía hay opciones para lograr lo que describes:
crear un componente temático. Puedes agregar un pequeño script de front-end que sincronice automáticamente un campo de usuario personalizado de Discourse con un valor ya almacenado en Auth0. Por ejemplo, cuando un usuario inicia sesión y el campo está vacío, el script puede llamar a un endpoint seguro (una pequeña función en la nube) que obtenga el valor del campo de Auth0 y actualice el perfil de Discourse a través de la API.
usar herramientas de automatización. También podrías usar servicios de automatización externos como Zapier o Make para realizar esa sincronización fuera de Discourse. La ventaja es que no tienes que escribir/mantener código, solo pagar por el servicio de terceros.
desarrollo personalizado. Podemos extender el propio plugin Auth0 para que admita de forma nativa el mapeo de reclamaciones personalizadas a campos de usuario al iniciar sesión, o crear un plugin personalizado que funcione junto con el plugin Auth0.
Un inconveniente claro del enfoque del componente temático es que tendrías que escribir y mantener código personalizado tú mismo, al mismo tiempo que tienes cuidado desde el punto de vista de la seguridad para evitar introducir posibles errores o vulnerabilidades. Honestamente, no es una solución que recomendaría para un sitio de producción como el tuyo.
Si estuviera en tu posición, me inclinaría más por la segunda opción, utilizando herramientas de terceros, o consideraría enviar una solicitud de función o una solicitud de trabajo personalizado (dependiendo de la evaluación de nuestros gerentes de proyecto) para mejorar el propio plugin Auth0.
Si estás interesado en explorar la última opción, podemos continuar la discusión en privado.