Comment définir la langue pour les utilisateurs SSO

Comment puis-je définir la langue d’un utilisateur connecté à l’aide de l’authentification unique (SSO) ? J’ai essayé d’utiliser la clé « locale » lors de la première connexion de l’utilisateur, mais cela n’a pas fonctionné. Je pense que la clé « locale » fonctionne si l’utilisateur est anonyme.

Bonjour @Ankur_Tyagi :wave:t2: bienvenue sur Meta :slight_smile:

Ce post devrait vous aider. Il y a deux paramètres dont vous avez besoin.

1 « J'aime »

Pour un nouvel utilisateur qui ne s’est jamais connecté à Discourse auparavant, cela devrait fonctionner si le paramètre locale est défini dans la charge utile lors de la première connexion de l’utilisateur au site. Par exemple, en utilisant la documentation npm que vous avez liée :

var userparams = {
	// Requis, sinon une exception sera levée
	"nonce": nonce,
	"external_id": "some user id here",
	"email": "some user email",
	// Optionnel
	"username": "some username",
	"name": "some real name",
    "locale": "es"
};

Pour un utilisateur existant qui a déjà un compte sur Discourse, vous devrez ajouter le paramètre locale_force_update à userparams et le définir sur true. Je pense que dans votre cas, vous pourriez inclure le paramètre locale_force_update à la fois lors de la création d’un nouvel utilisateur et lors de la mise à jour d’un utilisateur :

var userparams = {
	// Requis, sinon une exception sera levée
	"nonce": nonce,
	"external_id": "some user id here",
	"email": "some user email",
	// Optionnel
	"username": "some username",
	"name": "some real name",
    "locale": "es",
    "locale_force_update": true
};

Malheureusement, pour mettre à jour la locale, ou tout autre attribut via la charge utile DiscourseConnect, l’utilisateur devra se déconnecter de Discourse, puis se reconnecter. Cela signifie qu’il est peu probable que l’utilisateur obtienne la locale mise à jour immédiatement. Il existe une solution de contournement, mais je ne pense pas qu’elle soit gérée par le package npm discourse-sso. Pour mettre à jour un utilisateur via DiscourseConnect sans qu’il ait à se déconnecter et se reconnecter à Discourse, vous devez appeler la route sync_sso. Les détails sont ici : Sync DiscourseConnect user data with the sync_sso route.

Si vous rencontrez des difficultés pour définir correctement la locale pour les nouveaux utilisateurs, ou pour les utilisateurs qui se déconnectent et se reconnectent après avoir ajouté les paramètres de locale, essayez d’activer le paramètre de site Discourse verbose discourse connect logging. Cela vous permettra de voir les paramètres envoyés à Discourse depuis la page /logs de votre site (située dans Admin / Logs / Error Logs.)

2 « J'aime »

Bonjour @Lilly
Merci pour votre réponse.
J’ai essayé avec un nouvel utilisateur ainsi qu’en mettant à jour la locale pour un utilisateur existant, mais cela n’a pas fonctionné. Je pense que cela ne fonctionne que pour le cas des utilisateurs anonymes. Je cherche une solution pour les utilisateurs connectés.

Il serait utile que vous puissiez examiner les détails de configuration ci-dessous, peut-être y a-t-il quelque chose que je dois mettre à jour pour résoudre le problème, je ne suis pas sûr.

  1. Version du forum Discourse : Discourse 3.2.0.beta1-dev
  2. Package JS utilisé pour le sso : discourse-sso ( version : 1.0.5 )
  3. Lien du package Discourse : discourse-sso - npm

Salut @Ankur_Tyagi Je suis désolé que vous ayez toujours des problèmes. Avez-vous examiné les conseils de Simon en utilisant le paramètre locale_force_update ? Je pense que tout ce que je sais sur le SSO vient de @simon :slight_smile:

Je vous recommande de parcourir attentivement les informations publiées par @simon ainsi que le guide officiel DiscourseConnect SSO How-To qui a été lié.

Le paramètre de journalisation détaillée de Discourse Connect et les journaux peuvent vous aider à résoudre ce problème :

1 « J'aime »

Merci @Lilly, je vais essayer cette solution