Crear usuarios a través de la API usando IDs de usuario explícitos

Hola, he estado utilizando la API de Discourse y el plugin OAuth2 para migrar e iniciar sesión usuarios desde mi propio servicio SSO a una instalación privada de Discourse. Hasta ahora, he logrado migrar programáticamente a todos los usuarios de SSO a Discourse con éxito. Al migrar programáticamente, los nuevos usuarios se crean con un ID específico de Discourse que se incrementa automáticamente. Mi pregunta es: ¿Puedo usar la API para crear un usuario con un ID explícito para ese usuario? Es decir, si asigno un ID:22 a un usuario, ¿podré consultarlo mediante /admin/users/22.json?

He intentado pasar los parámetros ‘id’ y ‘external_id’ en el cuerpo de la solicitud POST, pero no funciona.

Edición: Además, ¿hay alguna forma a través de la API, dado un ID de usuario específico, de cambiar su nombre de usuario?

Gracias

1 me gusta

No puedes asignar el ID.

Existe una ruta de ID externo:

    get "#{root_path}/by-external/:external_id" => "users#show", constraints: { external_id: /[^\/]+/ }

Si habilitas la configuración del sitio sso_overrides_username (creo que es posible), no necesitas cambiar el nombre de usuario con la API.

3 Me gusta

Gracias, pero no tengo el external_id cuando se crea el usuario. El usuario se crea de forma programática y la asociación con el SSO externo no ocurrirá hasta que el usuario inicie sesión en Discourse. A menos que exista una forma de asociar programáticamente al usuario con ese external_id durante la migración de usuarios, creo que no se puede utilizar el external_id.

¿Ya tienes datos en Discourse con los que estos usuarios deben asociarse? ¿Por qué necesitas crear los usuarios?

Necesito migrar un grupo de usuarios existentes desde mi SSO a Discourse. Es posible que estos usuarios nunca inicien sesión directamente en Discourse, pero debería ser posible, por ejemplo, enviarles mensajes o recuperar sus notificaciones a través de la API de Discourse. Por esta razón, deben crearse de forma proactiva mediante programación. Además, los usuarios pueden cambiar su nombre de usuario en el SSO, por lo que, dado un ID, también debo poder actualizar el nombre de usuario de un usuario en Discourse.

¿Inicié un nuevo tema o se eliminó el resto de la información de alguna manera?

Parecería que el SSO tendría la cuenta y conocería un ID externo que podrías usar para crear el registro del usuario y luego utilizarlo en el futuro. Pero si eso es imposible de alguna manera, podrías intentar buscar al usuario por su dirección de correo electrónico. Incluso podrías crear una segunda dirección de correo electrónico falsa (¿y si cambian su dirección de correo electrónico real?) y luego quizás ocultarla de alguna manera para poder usarla como identificador en el futuro.