Come impostare la lingua per gli utenti SSO

Per un utente nuovo che non ha mai effettuato l’accesso a Discourse prima, dovrebbe funzionare se il parametro locale è impostato nel payload la prima volta che l’utente accede al sito. Ad esempio, utilizzando la documentazione npm che hai linkato:

var userparams = {
	// Obbligatorio, altrimenti verrà generata un'eccezione
	"nonce": nonce,
	"external_id": "some user id here",
	"email": "some user email",
	// Opzionale
	"username": "some username",
	"name": "some real name",
    "locale": "es"
};

Per un utente esistente che ha già un account su Discourse, dovrai aggiungere il parametro locale_force_update a userparams e impostarlo su true. Penso che nel tuo caso potresti includere il parametro locale_force_update sia quando crei un nuovo utente sia quando aggiorni un utente:

var userparams = {
	// Obbligatorio, altrimenti verrà generata un'eccezione
	"nonce": nonce,
	"external_id": "some user id here",
	"email": "some user email",
	// Opzionale
	"username": "some username",
	"name": "some real name",
    "locale": "es",
    "locale_force_update": true
};

Sfortunatamente, per aggiornare la locale, o qualsiasi altro attributo tramite il payload di DiscourseConnect, l’utente dovrà disconnettersi da Discourse e poi accedere nuovamente. Ciò significa che è improbabile che l’utente ottenga la locale aggiornata immediatamente. Esiste una soluzione alternativa, ma non credo che sia gestita dal pacchetto npm discourse-sso. Per aggiornare un utente tramite DiscourseConnect senza richiedere loro di disconnettersi e accedere nuovamente a Discourse, è necessario effettuare una chiamata al percorso sync_sso. I dettagli sono qui: Sync DiscourseConnect user data with the sync_sso route.

Se hai difficoltà a impostare correttamente la locale per i nuovi utenti, o per gli utenti che si disconnettono e accedono nuovamente dopo aver aggiunto i parametri della locale, prova ad abilitare l’impostazione del sito Discourse verbose discourse connect logging. Ciò ti consentirà di vedere i parametri che vengono inviati a Discourse dal tuo sito nella pagina /logs (trovata in Admin / Logs / Error Logs).

2 Mi Piace