Come eliminare un record SSO tramite API? Sto utilizzando Discourse e sto modificando l’external_id. Come posso cancellare i vecchi record senza perdere il mio utente e i suoi post?
Forse puoi eliminare tutti i record SSO una volta dalla console di Rails e farli riconnettere tramite l’indirizzo email? Non ricordo con certezza quale tabella stai cercando, ma potrebbe essere qualcosa come
UserAssociatedAccount.all.destroy_all
Penso che ci siano altri argomenti riguardanti questo problema. Li hai cercati?
L’external_id fornito dal provider SSO è previsto non cambi mai. Se possibile, dovresti evitare di modificare i valori di external_id dei tuoi utenti.
Finché non imposti il parametro SSO require_activation su true, puoi eliminare tutti i record SSO come ha menzionato Jay. Per farlo, accedi alla console del tuo sito ed esegui:
SingleSignOnRecord.destroy_all
Prima di procedere, devi essere certo di non aver impostato require_activation su true nel payload SSO. Se questo parametro è impostato, gli utenti non verranno trovati in base al loro indirizzo email al prossimo accesso al sito. Invece di ciò, riceveranno un errore quando proveranno ad accedere.
Se il parametro require_activation non è impostato su true, gli utenti verranno trovati in base al loro indirizzo email al prossimo accesso a Discourse. In quel momento verrà creato un nuovo record SSO per loro. Se gli indirizzi email di alcuni utenti non sono sincronizzati tra il tuo sito provider SSO e Discourse, incontreranno problemi al prossimo accesso a Discourse. Puoi trovare alcuni dettagli su come risolvere questi problemi qui: Debug and fixing common DiscourseConnect issues.
Se intendi eseguire il comando che ho postato sopra, assicurati di creare un backup del database del tuo sito prima di eseguirlo. In caso di problemi, potrai ripristinare il file di backup.
Il mio forum Discourse è nel piano STANDARD. È possibile accedere alla console Rails con questo piano? Se sì, come devo procedere?
Invia un’email a support@discourse.org o @support per eseguire il comando sopra.