Novos usuários do Wordpress se conectando a usuários existentes do Discourse

Olá @jord8on, a forma como a correspondência funciona no lado do Discourse é que ele primeiro tenta corresponder ao ID externo (que no seu caso agora aponta para usuários diferentes, pois você alterou seu banco de dados do WordPress) e, em seguida, tenta corresponder usando o endereço de e-mail. Existem boas razões para usar o ID primeiro. O e-mail não é um bom identificador descentralizado.

Portanto, o que você precisa fazer é excluir os registros de login único (single sign on) no Discourse criados quando você estava usando seu antigo banco de dados do WordPress. Você pode usar uma data e hora para identificá-los, por exemplo, você faria algo assim em sua instância do Discourse:

./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // verifique se isso corresponde às suas expectativas
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all

Os usuários antigos importados para o novo banco de dados serão correspondidos com base no e-mail às suas contas existentes do Discourse (já que seu novo ID do WordPress não corresponderá a nenhum registro de SSO).

Eu também removeria todos os dados de discourse_username no WordPress e deixaria que ele fosse resincronizado automaticamente através do webhook do usuário. Você precisará executar isso (talvez usando WP CLI), que exclui todas as entradas para o campo meta discourse_username.

delete_metadata( 'user', 0, 'discourse_username', '', true );

Para futuras pessoas que lerem isto, se você usar o DiscourseConnect com um banco de dados do WordPress e depois migrar para um banco de dados do WordPress totalmente novo sem uma migração, você terá esse tipo de problema. Você deve procurar assistência antes de fazer esse tipo de alteração.

2 curtidas