Come impostare la lingua per gli utenti SSO

Come posso impostare la lingua per un utente connesso tramite SSO? Ho provato a usare la chiave “locale” se l’utente accede per la prima volta, ma non ha funzionato. Credo che la chiave “locale” funzioni se l’utente è anonimo.

Ciao @Ankur_Tyagi :wave:t2: benvenuto in Meta :slight_smile:

Questo post dovrebbe aiutarti. Ci sono due parametri di cui hai bisogno.

1 Mi Piace

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

Ciao @Lilly
Grazie per la tua risposta.
Ho provato anche con un nuovo utente e aggiornando la locale per un utente esistente, ma non ha funzionato. Penso che funzioni solo per il caso degli utenti anonimi. Sto cercando una soluzione per gli utenti connessi.

Sarebbe utile se potessi rivedere i dettagli della configurazione di seguito, forse c’è qualcosa che devo aggiornare per risolvere il problema, non sono sicuro.

  1. Versione del forum Discourse: Discourse 3.2.0.beta1-dev
  2. Pacchetto JS utilizzato per sso: discourse-sso ( versione: 1.0.5 )
  3. Link al pacchetto Discourse: discourse-sso - npm

Ciao @Ankur_Tyagi Mi dispiace che tu stia ancora avendo problemi. Hai esaminato il consiglio di Simon utilizzando il parametro locale_force_update? Penso che tutto ciò che so sull’SSO provenga da @simon :slight_smile:

Ti consiglio di esaminare attentamente queste informazioni postate da @simon, nonché la Guida ufficiale a DiscourseConnect SSO che è stata collegata.

L’impostazione di logging dettagliato di discourse connect e i log possono aiutarti a risolvere questo problema:

1 Mi Piace

Grazie @Lilly, proverò questa soluzione