Nuevos usuarios de Wordpress conectándose a usuarios existentes de Discourse

Hola @jord8on, la forma en que funciona la correspondencia en el extremo de Discourse es que primero intenta hacer coincidir el ID externo (que en tu caso ahora apunta a diferentes usuarios ya que has cambiado tu base de datos de Wordpress), y luego intenta hacer coincidir usando la dirección de correo electrónico. Hay algunas buenas razones para usar primero el ID. El correo electrónico no es un buen identificador descentralizado.

Así que lo que necesitas hacer es eliminar los registros de inicio de sesión único en Discourse creados cuando usabas tu antigua base de datos de Wordpress. Puedes usar una fecha y hora para identificarlos, por ejemplo, harías algo como esto en tu instancia de Discourse:

./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // comprueba si esto coincide con tus expectativas
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all

Los usuarios antiguos importados a la nueva base de datos se corresponderán en función del correo electrónico con sus cuentas existentes de Discourse (ya que su nuevo ID de Wordpress no coincidirá con ningún registro de SSO).

También eliminaría todos los datos de discourse_username en Wordpress y dejaría que se resincronicen automáticamente a través del webhook de usuario. Necesitarás ejecutar esto (quizás usando WP CLI), que elimina todas las entradas para el campo meta discourse_username.

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

Para futuras personas que lean esto, si usas DiscourseConnect con una base de datos de Wordpress, luego te mueves a una base de datos de Wordpress completamente nueva sin una migración, tendrás este tipo de problema. Debes buscar ayuda antes de realizar este tipo de cambio.

2 Me gusta