Salut @jord8on, la façon dont la correspondance fonctionne du côté de Discourse est qu’elle essaie d’abord de faire correspondre l’ID externe (qui dans votre cas pointe maintenant vers différents utilisateurs car vous avez changé votre base de données WordPress), puis essaie de faire correspondre l’adresse e-mail. Il y a de bonnes raisons d’utiliser d’abord l’ID. L’e-mail n’est pas un bon identifiant décentralisé.
Vous devez donc supprimer les enregistrements d’authentification unique dans Discourse créés lorsque vous utilisiez votre ancienne base de données WordPress. Vous pouvez utiliser une date et une heure pour les identifier, par exemple, vous feriez quelque chose comme ceci sur votre instance Discourse :
./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // vérifiez si cela correspond à vos attentes
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all
Les anciens utilisateurs importés dans la nouvelle base de données seront mis en correspondance sur la base de l’e-mail avec leurs comptes Discourse existants (car leur nouvel ID WordPress ne correspondra à aucun enregistrement SSO).
Je supprimerais également toutes les données discourse_username sur WordPress et laisserais qu’elles soient automatiquement resynchronisées via le webhook utilisateur. Vous devrez exécuter ceci (peut-être en utilisant WP CLI), qui supprime toutes les entrées pour le champ méta discourse_username.
delete_metadata( 'user', 0, 'discourse_username', '', true );
Pour les futurs lecteurs, si vous utilisez DiscourseConnect avec une base de données WordPress, puis que vous passez à une base de données WordPress entièrement nouvelle sans migration, vous rencontrerez ce genre de problème. Vous devriez demander de l’aide avant d’effectuer ce type de changement.