Créer des utilisateurs via l'API en utilisant des identifiants utilisateur explicites

Bonjour, j’utilise l’API Discourse et le plugin OAuth2 pour migrer et connecter des utilisateurs depuis mon propre service SSO vers une installation Discourse privée. Jusqu’à présent, j’ai réussi à migrer programmatiquement tous les utilisateurs SSO vers Discourse. Lors de la migration programmatique, les nouveaux utilisateurs sont créés avec un identifiant Discourse spécifique incrémenté automatiquement. Ma question est la suivante : puis-je utiliser l’API pour créer un utilisateur avec un identifiant explicite pour cet utilisateur ? Autrement dit, si j’assigne un utilisateur à l’identifiant 22, puis-je le/la requêter via /admin/users/22.json ?

J’ai essayé de passer les paramètres id et external_id dans le corps de la requête POST, mais cela ne fonctionne pas.

Édition : existe-t-il également une méthode via l’API, étant donné un identifiant utilisateur spécifique, pour modifier son/sa nom d’utilisateur ?

Merci

1 « J'aime »

Vous ne pouvez pas attribuer l’identifiant.

Il existe une route d’identifiant externe :

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

Si vous activez le paramètre du site sso_overrides_username (je pense que cela existe), vous n’avez pas besoin de modifier le nom d’utilisateur via l’API.

3 « J'aime »

Merci, mais je n’ai pas l’external_id au moment de la création de l’utilisateur. L’utilisateur est créé de manière programmatique, et l’association avec le SSO externe ne se fera que lorsque l’utilisateur se connectera à Discourse. Sauf s’il existe un moyen d’associer programmatiquement l’utilisateur à cet external_id lors de la migration des utilisateurs, je ne pense pas que l’external_id puisse être utilisé.

Avez-vous déjà des données dans Discourse auxquelles ces utilisateurs doivent être associés ? Pourquoi devez-vous créer ces utilisateurs ?

Je dois migrer un grand nombre d’utilisateurs existants de mon SSO vers Discourse. Ces utilisateurs ne se connecteront peut-être jamais directement à Discourse, mais il doit être possible, par exemple, de leur envoyer des messages ou de récupérer leurs notifications via l’API Discourse. C’est pourquoi ils doivent être créés de manière proactive de façon programmatique. De plus, les utilisateurs peuvent modifier leur nom d’utilisateur sur le SSO ; par conséquent, étant donné un identifiant, je dois également pouvoir mettre à jour le nom d’utilisateur d’un utilisateur sur Discourse.

Est-ce que j’ai créé un nouveau sujet ou est-ce que les autres éléments ont été supprimés d’une manière ou d’une autre ?

Il semblerait que le SSO possède le compte et connaisse un identifiant externe que vous pourriez utiliser pour créer l’enregistrement utilisateur, puis l’utiliser par la suite. Mais si cela s’avère impossible, vous pourriez essayer de retrouver l’utilisateur par adresse e-mail. Vous pourriez même créer une seconde adresse e-mail factice (au cas où ils changeraient leur véritable adresse e-mail), puis peut-être la masquer d’une manière ou d’une autre pour l’utiliser comme identifiant à l’avenir.