¿Cómo puedo establecer el idioma para un usuario que ha iniciado sesión utilizando SSO? Intenté usar la clave “locale” si el usuario accede por primera vez, pero no funcionó. Creo que la clave “locale” funciona si el usuario es anónimo.
Hola @Ankur_Tyagi
bienvenido a Meta ![]()
Esta publicación debería ayudar. Hay dos parámetros que necesitas.
Para un usuario nuevo que nunca antes ha iniciado sesión en Discourse, debería funcionar si el parámetro locale se establece en la carga útil la primera vez que el usuario inicia sesión en el sitio. Por ejemplo, usando la documentación de npm que enlazaste:
var userparams = {
// Requerido, de lo contrario lanzará una excepción
"nonce": nonce,
"external_id": "algún id de usuario aquí",
"email": "algún correo electrónico de usuario",
// Opcional
"username": "algún nombre de usuario",
"name": "algún nombre real",
"locale": "es"
};
Para un usuario existente que ya tiene una cuenta en Discourse, necesitarás agregar el parámetro locale_force_update a userparams y establecerlo en true. Creo que en tu caso podrías incluir el parámetro locale_force_update tanto al crear un usuario nuevo como al actualizar un usuario:
var userparams = {
// Requerido, de lo contrario lanzará una excepción
"nonce": nonce,
"external_id": "algún id de usuario aquí",
"email": "algún correo electrónico de usuario",
// Opcional
"username": "algún nombre de usuario",
"name": "algún nombre real",
"locale": "es",
"locale_force_update": true
};
Desafortunadamente, para actualizar la configuración regional, u otros atributos a través de la carga útil de DiscourseConnect, el usuario tendrá que cerrar sesión en Discourse y luego volver a iniciarla. Esto significa que es poco probable que el usuario obtenga la configuración regional actualizada de inmediato. Hay una solución para esto, pero no creo que sea manejada por el paquete npm discourse-sso. Para actualizar un usuario a través de DiscourseConnect sin requerir que cierre y vuelva a iniciar sesión en Discourse, necesitas hacer una llamada a la ruta sync_sso. Los detalles sobre eso están aquí: Sync DiscourseConnect user data with the sync_sso route.
Si tienes problemas para configurar correctamente la configuración regional para usuarios nuevos, o para usuarios que cierran sesión y vuelven a iniciarla después de agregar los parámetros de configuración regional, intenta habilitar la configuración del sitio de Discourse verbose discourse connect logging. Eso te permitirá ver los parámetros que se envían a Discourse desde la página /logs de tu sitio (que se encuentra en Admin / Logs / Error Logs).
Hola @Lilly
Gracias por tu respuesta.
Lo probé con un usuario nuevo y también actualizando la configuración regional de un usuario existente, pero no funcionó. Creo que solo funciona para el caso de usuarios anónimos. Estoy buscando una solución para usuarios que han iniciado sesión.
Sería útil si pudieras revisar los detalles de configuración a continuación, tal vez haya algo que necesite actualizar para solucionarlo, no estoy seguro.
- Versión del foro de Discourse: Discourse 3.2.0.beta1-dev
- Paquete JS utilizado para sso: discourse-sso ( versión: 1.0.5 )
- Enlace del paquete de Discourse: discourse-sso - npm
Hola @Ankur_Tyagi, lamento que sigas teniendo problemas. ¿Revisaste el consejo de Simon usando el parámetro locale_force_update? Creo que todo lo que sé sobre SSO es de @simon ![]()
Te recomendaría revisar cuidadosamente la información que publicó @simon, así como la guía oficial DiscourseConnect SSO How-To que se ha enlazado.
La configuración de registro detallado de discourse connect y los registros pueden ayudarte a solucionar esto:
Gracias @Lilly, intentaré esta solución.
