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. Interessante. Penso che ci sia una correzione in arrivo per il problema Missing images at Meta.discourse.org, quindi spero che venga risolto da quello.
Câè unâimpostazione che devo modificare per specificare la lunghezza massima di un campo utente personalizzato? Al momento, in questo campo âTestâ che ho creato come campo utente di prova, non riesco a inserire nemmeno un carattere nel mio profilo utente (o anche âTestâ, come mostrato).
PoichĂŠ gli URL sono testo, il campo di testo funziona tecnicamente, @Vaping_Community. Tuttavia, potresti chiedere dettagli aggiuntivi come la convalida del valore o simili.
Potresti cercare o creare un argomento Feature con ciò che hai in mente.
Ă possibile collegare unâasserzione personalizzata dal mio SSO Auth0 a un campo personalizzato? Attualmente lâutente inserisce le informazioni del campo in Auth0, quindi deve inserirle una seconda volta al momento della registrazione. Vorrei che il valore venisse mappato, se possibile.
Câè un modo per verificare il nome del campo nel db? Ad esempio, abbiamo un campo nome, ho provato custom.firstname, custom.first_name e custom.firstName, nessuno dei quali ha comportato il popolamento dei campi nella schermata di registrazione.
Ho controllato i log degli errori per confermare che i campi token stiano arrivando come mostrato sopra.
La sintassi deve essere custom.user_field_x, dove x è lâID numerico del campo mostrato in /admin/config/user-fields/{x}/edit.
Questa funzionalità di mapping non è disponibile direttamente nel plugin Auth0.
Detto questo, ci sono ancora opzioni per ottenere ciò che stai descrivendo:
creare un componente tema. Puoi aggiungere un piccolo script front-end che sincronizzi automaticamente un campo utente personalizzato di Discourse con un valore già memorizzato in Auth0. Ad esempio, quando un utente accede e il campo è vuoto, lo script può chiamare un endpoint sicuro (una piccola funzione cloud) che recupera il valore del campo da Auth0 e aggiorna il profilo Discourse tramite API.
utilizzare strumenti di automazione. Potresti anche utilizzare servizi di automazione esterni come Zapier o Make per eseguire la sincronizzazione al di fuori di Discourse. Il vantaggio è che non devi scrivere/mantenere codice ma paghi solo per il servizio di terze parti.
sviluppo personalizzato. Possiamo estendere il plugin Auth0 stesso per supportare nativamente il mapping di claim personalizzati nei campi utente allâaccesso, o creare un plugin personalizzato che lavori in coppia con il plugin Auth0.
Uno svantaggio evidente dellâapproccio del componente tema è che dovresti scrivere e mantenere tu stesso codice personalizzato, prestando attenzione anche alla sicurezza per evitare di introdurre potenziali bug o vulnerabilitĂ . Onestamente, non è una soluzione che consiglierei per un sito di produzione come il tuo.
Se fossi nella tua posizione, propenderei piĂš per la seconda opzione, utilizzando strumenti di terze parti, o prenderei in considerazione lâinvio di una richiesta di funzionalitĂ o di una richiesta di lavoro personalizzato (a seconda della valutazione dei nostri project manager) per migliorare il plugin Auth0 stesso.
Se sei interessato a esplorare questâultima opzione, possiamo continuare la discussione privatamente.