Nuovi utenti Wordpress che si connettono a utenti Discourse esistenti

tl;dr - Quando un nuovo utente di WordPress effettua un ordine o si iscrive, sembra sovrascrivere o connettersi in qualche modo con utenti esistenti in Discourse. Non sono sicuro di come risolvere il problema.

Contesto:

  • Stiamo utilizzando il plugin wp-discourse per l’SSO, dove WordPress è il provider di DiscourseConnect.
  • Abbiamo lanciato la nostra community Discourse, ospitata su un droplet Digital Ocean.
  • Quando abbiamo lanciato la community Discourse e l’abbiamo connessa all’SSO con il plugin wp-discourse, stavamo ospitando WordPress su AWS Lightsail, utilizzando Plesk come pannello di controllo.
  • Siamo migrati all’hosting gestito WordPress di Nexcess, all’inizio di quest’anno e il connettore Discourse sembrava essere rimasto intatto.
  • Non abbiamo migrato i nostri utenti quando siamo passati alla nostra nuova installazione WordPress. Sono stati esportati e prevediamo di importarli presto.
  • Il nostro sito WordPress è stato chiuso per un po’ di tempo mentre apportavamo alcune grandi modifiche.

Negli ultimi mesi, abbiamo avuto molte persone che hanno effettuato ordini su WordPress (WooCommerce) e abbiamo notato qualcosa di particolare… che quando si guarda un account utente in WordPress e si guarda il campo Discourse Username, il loro nome utente mostra quelli di utenti esistenti da Discourse. In qualche modo la nostra connessione a Discourse sembra essere compromessa. Un utente si è appena iscritto oggi e il suo Discourse Username è tennisdpm, che come potete vedere è un utente esistente, che si è iscritto nel 2020. :thinking:

Presto migreremo (aggiungeremo) tutti gli utenti che avevano account sulla nostra vecchia istanza WordPress e li aggiungeremo alla nostra nuova istanza, ma vedendo come sembra esserci qualche conflitto con gli utenti esistenti e i nuovi utenti che si iscrivono, vogliamo avere un piano d’azione che prevenga conflitti continui e sincronizzi gli utenti WP esistenti (tramite email come identificatore univoco) con gli utenti Discourse, e fornisca nuovi account Discourse SSO, quando nuovi utenti WP entrano a far parte della community.

Apprezzeremmo molto un aiuto e una guida su come procedere!

Impostazioni SSO di connessione wp-discourse esistenti:

Sembra che i tuoi nuovi utenti WP stiano ricevendo ID utente che corrispondono agli ID esterni di DiscourseConnect esistenti.

2 Mi Piace

Oh mio Dio!! Grazie per l’avviso @omarfilip! C’è un modo per resettare questo o impedire che continui ad accadere? O forse potremmo/dovremmo disattivarlo finché non avremo finito di migrare tutti gli ex utenti.

Non sono sicuro di quale sia il modo migliore per affrontarlo. Quanti record devono essere corretti?

Abbiamo circa 80 utenti in WP in questo momento che devono essere “scollegati” dagli attuali utenti di Discourse con cui sembrano essere associati. Abbiamo anche circa 750 utenti che dobbiamo importare, dalla nostra vecchia istanza, e assicurarci che non abbiano lo stesso problema che stiamo riscontrando in questo momento.

Speravo che gli account in WP fossero collegati all’account Discourse in base all’indirizzo email come identificatore univoco… non ID esterni/utente.

Ciao @jord8on, il modo in cui funziona il matching dal lato discourse è che prima tenta di trovare una corrispondenza con l’ID esterno (che nel tuo caso ora punta a utenti diversi poiché hai modificato il tuo database di Wordpress) e poi tenta di trovare una corrispondenza utilizzando l’indirizzo email. Ci sono buone ragioni per usare prima l’ID. L’email non è un buon identificatore decentralizzato.

Quindi, quello che devi fare è eliminare i record di single sign-on in discourse creati quando stavi usando il tuo vecchio database di Wordpress. Puoi usare una data e ora per identificarli, ad esempio, faresti qualcosa del genere sulla tua istanza di discourse

./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // verifica se questo corrisponde alle tue aspettative
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all

I vecchi utenti importati nel nuovo db verranno abbinati sulla base dell’email ai loro account discourse esistenti (poiché il loro nuovo ID di Wordpress non corrisponderà ad alcun record sso).

Rimuoverei anche tutti i dati di discourse_username su Wordpress e lascerei che vengano risincronizzati automaticamente tramite il webhook utente. Dovrai eseguire questo (forse usando WP CLI), che elimina tutte le voci per il campo meta discourse_username.

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

Per i futuri utenti che leggeranno questo, se usi DiscourseConnect con un database di Wordpress, quindi passi a un database di Wordpress completamente nuovo senza una migrazione, avrai questo tipo di problema. Dovresti chiedere assistenza prima di apportare questo tipo di modifica.

2 Mi Piace