Wie lösche ich einen SSO-Eintrag über die API? Ich verwende Discourse und ändere die externe ID. Wie kann ich die alten Einträge dafür löschen, ohne Benutzer und Beiträge zu verlieren?
Vielleicht löscht du einfach einmal alle SSO-Einträge über die Rails-Konsole und lässt die Benutzer sich erneut über ihre E-Mail-Adresse anmelden? Ich kann mich nicht mehr genau erinnern, nach welcher Tabelle du suchst, aber es könnte so etwas wie
UserAssociatedAccount.all.destroy_all
sein.
Ich glaube, es gibt noch andere Beiträge zu diesem Thema. Hast du schon danach gesucht?
Die vom SSO-Anbieter übergebene external_id sollte sich niemals ändern. Wenn es möglich ist, solltest du vermeiden, die external_id-Werte deiner Benutzer zu ändern.
Solange du den SSO-Parameter require_activation nicht auf true setzt, kannst du alle SSO-Datensätze löschen, wie Jay erwähnt hat. Gehe dazu in die Konsole deiner Site und führe folgendes aus:
SingleSignOnRecord.destroy_all
Bevor du dies tust, musst du sicherstellen, dass du den Parameter require_activation im SSO-Payload nicht auf true setzt. Wenn dieser Parameter gesetzt ist, werden Benutzer beim nächsten Login auf der Site nicht anhand ihrer E-Mail-Adresse gefunden. Stattdessen erhalten sie einen Fehler, wenn sie versuchen, sich einzuloggen.
Wenn der Parameter require_activation nicht auf true gesetzt ist, werden Benutzer beim nächsten Login in Discourse anhand ihrer E-Mail-Adresse gefunden. Zu diesem Zeitpunkt wird ein neuer SSO-Datensatz für sie erstellt. Falls die E-Mail-Adressen irgendeines Benutzers zwischen deiner SSO-Anbieter-Site und Discourse nicht synchron sind, werden sie beim nächsten Login in Discourse auf Probleme stoßen. Einzelheiten zur Behebung dieser Probleme findest du hier: Debug and fixing common DiscourseConnect issues.
Wenn du den oben genannten Befehl ausführen möchtest, stelle sicher, dass du vor der Ausführung eine Sicherungskopie der Datenbank deiner Site erstellst. Falls etwas schiefgeht, kannst du die Sicherungsdatei wiederherstellen.
Mein Discourse-Forum ist im STANDARD-Plan. Ist es möglich, in diesem Plan Zugriff auf die Rails-Konsole zu erhalten? Falls ja, wie gehe ich vor?
Sende eine E-Mail an support@discourse.org oder schreibe @support, damit der oben genannte Befehl ausgeführt wird.