In qualità di amministratore di un forum che utilizza DiscourseConnect, potresti occasionalmente ricevere segnalazioni da utenti che, tentando di accedere al forum, vengono accolti da un messaggio di errore. Ad esempio: “C’è un problema con il tuo account. Contatta l’amministratore del sito.”
Abilitare il logging dettagliato di Discourse Connect
Per diagnosticare il problema, la prima cosa da fare è abilitare l’impostazione del sito “verbose discourse connect logging” su Discourse. Se questa impostazione era già abilitata, puoi accedere direttamente ai log del sito in Admin/Logs/Error Logs. Se l’impostazione non era precedentemente abilitata, dovrai chiedere all’utente di tentare nuovamente l’accesso, in modo da generare una voce di log relativa al tentativo di accesso fallito.
Leggere la voce di log
Vai su Admin/Logs/Error Logs e cerca una voce di log recente che inizi con Verbose SSO log: Record was invalid. Se hai difficoltà a trovare la voce, inserisci “Record was invalid” nella casella di ricerca in fondo alla pagina dei log. Clicca sulla voce di log, poi clicca sulla scheda “info” nella barra degli strumenti dei log:
Le informazioni di cui avrai bisogno sono la motivazione (indicata nella voce di log) e gli campi email e external_id (trovati nella sezione info).
Risolvere i problemi di accesso a DiscourseConnect legati a require_activation
Un problema comune con l’accesso SSO è: Record was invalid: User {:primary_email=> "has already been taken"}.
Ciò può verificarsi quando il parametro require_activation nel payload SSO è impostato su true e l’utente ha già un account su Discourse che o non ha ancora un single_sign_on_record associato, oppure ne ha uno, ma il external_id del record non corrisponde al external_id dell’utente che sta tentando di accedere.
Per confermare ciò, accedi alla console Rails del tuo forum e cerca un utente con l’indirizzo email utilizzato nel tentativo di accesso SSO fallito:
u = User.find_by_email('sally@example.com')
Ora, verifica se esiste un single_sign_on_record per questo utente:
sso_record = u.single_sign_on_record
Se l’utente esiste sul tuo forum ma non ha un record SSO, puoi crearne uno per lui utilizzando i valori del log SSO:
SingleSignOnRecord.create!(user_id: 2, external_id: 2, external_email: 'sally@example.com', last_payload: '')
L’utente dovrebbe ora essere in grado di accedere.
Se esiste già un record SSO per l’utente, ma il suo external_id non corrisponde al external_id del tentativo di accesso fallito, dovrai investigare le cause di questa discrepanza. Un modo in cui ciò può accadere è se l’account di un utente è stato eliminato e poi ricreato sul sito del provider SSO. In tal caso, puoi aggiornare il record SSO per utilizzare il nuovo external_id:
sso_record.external_id = <failed-sso-login-record-external_id>
sso_record.save!
L’utente dovrebbe ora essere in grado di accedere.
Se stai utilizzando il plugin WP Discourse e incontri il problema descritto sopra, consulta Validate Email Addresses with the WP Discourse plugin per dettagli su come risolvere il problema senza dover accedere alla console Rails.


I was trying it with the " < > " and it wasn’t working, of course ツ



Thank you!