Como definir o idioma para usuários SSO

Para um usuário novo que nunca fez login no Discourse antes, deve funcionar se o parâmetro locale for definido na carga útil na primeira vez que o usuário fizer login no site. Por exemplo, usando a documentação do npm que você vinculou:

var userparams = {
	// Obrigatório, caso contrário, lançará uma exceção
	"nonce": nonce,
	"external_id": "algum id de usuário aqui",
	"email": "algum email de usuário",
	// Opcional
	"username": "algum nome de usuário",
	"name": "algum nome real",
    "locale": "es"
};

Para um usuário existente que já possui uma conta no Discourse, você precisará adicionar o parâmetro locale_force_update a userparams e defini-lo como true. Acho que, no seu caso, você pode incluir o parâmetro locale_force_update tanto ao criar um novo usuário quanto ao atualizar um usuário:

var userparams = {
	// Obrigatório, caso contrário, lançará uma exceção
	"nonce": nonce,
	"external_id": "algum id de usuário aqui",
	"email": "algum email de usuário",
	// Opcional
	"username": "algum nome de usuário",
	"name": "algum nome real",
    "locale": "es",
    "locale_force_update": true
};

Infelizmente, para atualizar o local, ou quaisquer outros atributos por meio da carga útil do DiscourseConnect, o usuário terá que sair do Discourse e, em seguida, fazer login novamente. Isso significa que é improvável que o usuário obtenha o local atualizado imediatamente. Existe uma solução alternativa para isso, mas acho que não é tratada pelo pacote npm discourse-sso. Para atualizar um usuário via DiscourseConnect sem exigir que ele saia e faça login novamente no Discourse, você precisa fazer uma chamada para a rota sync_sso. Os detalhes sobre isso estão aqui: Sync DiscourseConnect user data with the sync_sso route.

Se você estiver com problemas para definir o local corretamente para novos usuários, ou para usuários que saem e fazem login novamente após adicionar os parâmetros de local, tente habilitar a configuração do site Discourse verbose discourse connect logging. Isso permitirá que você veja os parâmetros que estão sendo enviados para o Discourse a partir da página /logs do seu site (encontrada em Admin / Logs / Error Logs.)

2 curtidas