tl;dr - Quando um novo usuário do WordPress faz um pedido ou se cadastra, ele parece sobrescrever ou se conectar de alguma forma com usuários existentes no Discourse. Não tenho certeza de como solucionar.
Contexto:
Estamos usando o plugin wp-discourse para SSO, onde o WordPress é o Provedor do DiscourseConnect.
Lançamos nossa comunidade Discourse, hospedada em um droplet da Digital Ocean.
Quando lançamos a comunidade Discourse e a conectamos ao SSO com o plugin wp-discourse, estávamos hospedando o WordPress na AWS Lightsail, usando o Plesk como nosso painel de controle.
Migramos para a hospedagem gerenciada WordPress da Nexcess, no início deste ano, e o conector Discourse pareceu permanecer intacto.
Não migramos nossos usuários quando mudamos para nossa nova instalação do WordPress. Eles foram exportados e planejamos importá-los em breve.
Nosso site WordPress foi desativado por um tempo, enquanto fazíamos alguns grandes ajustes.
Nos últimos meses, tivemos muitas pessoas fazendo pedidos no WordPress (WooCommerce) e notamos algo peculiar… que ao olhar para uma conta de usuário no WordPress e olhar o campo Nome de Usuário do Discourse, o nome de usuário deles está aparecendo como o de usuários existentes do Discourse. De alguma forma, nossa conexão com o Discourse parece estar confusa. Um usuário acabou de se cadastrar hoje e o Nome de Usuário do Discourse dele é tennisdpm, que você pode ver é um usuário existente, que se cadastrou em 2020.
Em breve migraremos (adicionaremos) todos os usuários que tinham contas em nossa antiga instância do WordPress e os adicionaremos à nossa nova instância, mas vendo como parece haver algum conflito com usuários existentes e novos usuários se cadastrando, queremos ter um plano de ação que impeça conflitos contínuos e sincronize usuários existentes do WP (usando o e-mail como identificador único) com usuários do Discourse, e provisione novas contas do Discourse via SSO, quando novos usuários do WP chegarem.
Agradeceríamos muito alguma ajuda e direção sobre como devemos proceder!
Configurações existentes de SSO do conector wp-discourse:
Nossa!! Obrigado pelo aviso @omarfilip! Existe alguma maneira de redefinir isso ou impedir que isso continue acontecendo? Ou talvez pudéssemos/deveríamos desativar isso até terminarmos de migrar todos os usuários antigos.
Temos cerca de 80 usuários no WP agora que precisam ser “desvinculados” dos usuários atuais do Discourse com os quais parecem estar associados. Em seguida, também temos cerca de 750 usuários que precisamos importar, de nossa instância antiga, e ter certeza de que eles não estão tendo o mesmo problema que estamos tendo agora.
Eu esperava que as contas no WP estivessem vinculadas à conta do Discourse com base no endereço de e-mail como identificador exclusivo… não em IDs externos/de usuário.
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.
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.