En tant qu’administrateur d’un forum utilisant DiscourseConnect, vous pouvez occasionnellement recevoir des signalements d’utilisateurs indiquant qu’ils rencontrent un message d’erreur lorsqu’ils tentent de se connecter au forum. Par exemple : « Un problème est survenu avec votre compte. Veuillez contacter l’administrateur du site. »
Activer la journalisation verbose de DiscourseConnect
Pour déboguer le problème, la première chose à faire est d’activer le paramètre du site « journalisation verbose de DiscourseConnect » sur Discourse. Si ce paramètre était déjà activé, vous pouvez directement accéder aux journaux de votre site via Admin/Journaux/Journaux d’erreurs. Si le paramètre n’était pas activé précédemment, vous devrez demander à l’utilisateur de réessayer de se connecter afin de générer une entrée de journal correspondant à sa tentative de connexion échouée.
Lire l’entrée du journal
Accédez à Admin/Journaux/Journaux d’erreurs et recherchez une entrée de journal récente commençant par Verbose SSO log: Record was invalid. Si vous avez du mal à trouver l’entrée, saisissez « Record was invalid » dans la zone de recherche située en bas de la page des journaux. Cliquez sur l’entrée du journal, puis sur l’onglet « info » dans la barre d’outils des journaux :
Les informations dont vous aurez besoin sont la raison (indiquée dans l’entrée du journal), ainsi que l’email et l’external_id (trouvés dans la section info).
Résoudre les problèmes de connexion DiscourseConnect liés à require_activation
Un problème courant avec la connexion SSO est : Record was invalid: User {:primary_email=>\"has already been taken\"}.
Cela peut se produire lorsque le paramètre require_activation dans la charge utile SSO est défini sur true et que l’utilisateur possède déjà un compte sur Discourse qui n’a pas encore de single_sign_on_record associé, ou qui possède un single_sign_on_record, mais dont l’external_id ne correspond pas à l’external_id de l’utilisateur tentant de se connecter.
Pour confirmer cela, accédez à la console Rails de votre forum et recherchez un utilisateur ayant l’adresse e-mail utilisée lors de la tentative de connexion SSO échouée :
u = User.find_by_email('sally@example.com')
Vérifiez ensuite s’il existe un single_sign_on_record pour cet utilisateur :
sso_record = u.single_sign_on_record
Si l’utilisateur existe sur votre forum mais ne possède pas d’enregistrement SSO, vous pouvez créer un enregistrement pour lui en utilisant les valeurs provenant du journal SSO :
SingleSignOnRecord.create!(user_id: 2, external_id: 2, external_email: 'sally@example.com', last_payload: '')
L’utilisateur devrait maintenant pouvoir se connecter.
S’il existe déjà un enregistrement SSO pour l’utilisateur, mais que son external_id ne correspond pas à l’external_id de la tentative de connexion échouée, vous devrez investiguer la cause de cette divergence. Cela peut se produire, par exemple, si le compte d’un utilisateur a été supprimé puis recréé sur le site du fournisseur SSO. Dans ce cas, vous pouvez mettre à jour l’enregistrement SSO pour utiliser le nouvel external_id :
sso_record.external_id = <failed-sso-login-record-external_id>
sso_record.save!
L’utilisateur devrait maintenant pouvoir se connecter.
Si vous utilisez le plugin WP Discourse et que vous rencontrez le problème décrit ci-dessus, consultez Validate Email Addresses with the WP Discourse plugin pour des détails sur la résolution du problème sans avoir à accéder à la console Rails.


I was trying it with the " < > " and it wasn’t working, of course ツ



Thank you!