Lorsque Discourse est un fournisseur d'identité, enregistre-t-il les identifiants utilisateur externes?

J’utilise Discourse comme fournisseur d’identité pour mon application Rails (vous vous connectez à mon application Rails avec votre identifiant Discourse ; pas l’inverse). J’aimerais ajouter un lien sur les pages de profil utilisateur dans Discourse pour vous rediriger vers leur profil respectif sur mon application Rails. Pour ce faire, Discourse devrait connaître leur identifiant utilisateur dans mon application/base de données Rails.

Je sais que DiscourseConnect enregistre l’‘external_id’ lorsque vous faites les choses dans l’autre sens (vous connecter à Discourse avec un autre identifiant). Mais enregistre-t-il quelque chose lorsque c’est dans ce sens ?

Sinon, des conseils pour le stocker ?

1 « J'aime »

Cela ne le fait pas, vous aurez donc besoin de quelque chose de personnalisé.

Je me demande s’il serait plus logique de gérer cela dans votre application Rails, car elle connaît l’identifiant Discourse d’un utilisateur ?

Vous pourriez configurer une route comme /profile-by-discourse-id/:discourse_id qui recherche l’utilisateur pertinent en fonction de l’identifiant Discourse et redirige ensuite vers le profil de l’utilisateur dans l’application Rails.

1 « J'aime »

Merci @david. Assez drôle, c’est exactement ce que j’ai fait pour faire le lien dans l’autre sens (depuis les profils utilisateur de mon application Rails vers les profils utilisateur Discourse) via ce plugin Discourse (/user-by-id/123/summary) puisque mon application Rails stocke l’ID utilisateur Discourse au lieu du nom d’utilisateur (car les noms d’utilisateur peuvent changer).

Cette solution fonctionnerait dans l’autre sens, sauf que tous les utilisateurs du forum n’ont pas de profils utilisateur dans mon application Rails. Un utilisateur Rails n’est créé qu’une fois que l’utilisateur Discourse ‘rejoint’ l’organisation, alors que le forum Discourse peut contenir des non-membres.

Je suppose donc que mes deux options sont :
A) Créer un plugin JavaScript qui envoie une requête ajax à mon application Rails pour déterminer si l’utilisateur Discourse est également un utilisateur de l’application Rails, et si oui, afficher un lien ; ou
B) Au moment où l’utilisateur Rails est créé et lié à l’utilisateur Discourse, en plus de stocker l’ID utilisateur Discourse dans la base de données de l’application Rails, stocker d’une manière ou d’une autre l’ID utilisateur Rails dans le profil utilisateur Discourse (par exemple, comme champ utilisateur personnalisé).

Je pense que (B) est la meilleure solution (à condition que le champ utilisateur personnalisé ne soit pas modifiable sauf par les administrateurs), bien que je ne sois pas familier avec les champs personnalisés ni avec leur accessibilité via l’API.

EDIT : Je me souviens maintenant de la dernière fois que j’ai examiné cela : le problème est que les champs utilisateur personnalisés sont modifiables par l’utilisateur, ce qui en fait un mauvais endroit pour stocker une référence générée par le système comme celle-ci :confused: