Konfligierende E-Mail-Adressen, die Administratoren mehr Macht zur Lösung von Problemen geben

Einer unserer Benutzer verfügt über zwei Discourse-Konten: eines, das nicht mehr genutzt wird, und ein neues, auf das er sich nicht einloggen kann. Der Grund scheint darin zu liegen, dass sein neues Konto bei unserem CAS SSO-Anbieter dieselbe E-Mail-Adresse hat wie sein altes Konto auf unserem Forum.

Ich habe an meinem eigenen Testkonto experimentiert, indem ich es deaktiviert und den SSO-Eintrag gelöscht habe. Dies scheint jedoch neue Logins für dieses Konto zu verhindern, da der vorhandene Eintrag nicht mehr mit dem SSO-Payload übereinstimmt und die E-Mail-Adresse nun als konfliktbehaftet erkannt wird.

Außerdem habe ich versucht, die E-Mail-Adresse auf dem ungenutzten Discourse-Konto des Benutzers zu ändern, damit er sich mit dieser Adresse auf seinem neuen Konto anmelden kann. Dafür ist jedoch eine E-Mail-Bestätigung erforderlich. Ich habe auf unserem SMTP-Server einen E-Mail-Alias eingerichtet, um eine beliebige Adresse abzufangen. Beim Folgen des Links muss ich mich jedoch über SSO als dieser Benutzer anmelden. Das Problem dabei ist, dass ich das Konto des Benutzers reaktivieren, ein neues Passwort festlegen, das Konto mit unserer Mitgliederdatenbank verknüpfen und eine falsche Mitgliedschaft bei unserem SSO-Anbieter erstellen müsste. Das ist zwar möglich, aber ich habe das Gefühl, mich in einem verschlungenen Netz zu befinden, um das Konto dieses Benutzers zu korrigieren.

Der direkte Eingriff in die Datenbank mit einigen SQL-Abfragen ist etwas, das ich in der Vergangenheit bereits durchgeführt habe, aber das ist riskant, und ich würde diese Methode gerne vermeiden, wenn möglich.

Wenn es Discourse nicht beeinträchtigt, wäre ich sehr daran interessiert, eine Funktion zu haben, die es mir erlaubt, eine E-Mail-Adresse auf einem deaktivierten Konto zu löschen, anstatt sie nur als unbestätigt zu markieren.

Wenn es andere Möglichkeiten gibt, dieses Problem zu lösen, lassen Sie es mich bitte wissen. Vielen Dank!

Warum nicht die alten Benutzer in den neuen zusammenführen?

Ich glaube, Sie verwenden Discourses Implementierung von SSO und setzen den SSO-Parameter require_activation im SSO-Payload auf true. Falls dem so ist, werfen Sie einen Blick auf dieses Thema für Details zur Behebung des Problems: Debug and fixing common DiscourseConnect issues. Es ist sicherer, die im Thema angegebenen Rails-Konsolenbefehle auszuführen, als Ihre Datenbank direkt mit SQL-Abfragen zu aktualisieren.

Das Zusammenführen der beiden Konten, wie im obigen Beitrag erwähnt, ist wahrscheinlich ein guter Ansatz, aber Sie müssen möglicherweise nach dem Zusammenführen einige Anpassungen am SSO-Eintrag vornehmen.

Es gibt auch das, was ich gerade über die Suche gefunden habe: merge user accounts. Dies ist weiterhin verfügbar, indem Sie im aktiven Benutzerlistenbereich (Admin-Dashboard) auf den Benutzer klicken, nach unten scrollen und die drei unten gezeigten Buttons sehen.


Discourse 2.5.0.beta3 Release Notes

Benutzer über die Benutzeroberfläche zusammenführen

Anfang 2018 haben wir die Unterstützung für das Zusammenführen zweier Benutzerkonten eingeführt. Dafür war zuvor SSH-Zugriff auf den Server erforderlich, da die Zusammenführungsfunktion als Rake-Aufgabe implementiert wurde.

Seitdem können Benutzer von jedem Administrator zusammengeführt werden! Besuchen Sie die Benutzer-Verwaltungsseite und wählen Sie unten auf der Seite „Übertragen & Löschen“ aus.image

Geben Sie den Benutzernamen ein, in den das Konto zusammengeführt werden soll, und klicken Sie auf „Übertragen & Löschen @Benutzername“, um den Zusammenführungsprozess zu starten.

Danke für die Tipps und die Hilfe dazu. Ich werde es nächste Woche an ein paar Testkonten ausprobieren und dir Bescheid geben, falls ich auf größere Probleme stoße. Danke : )

Okay, also hat alles geklappt. Als ich die Konten zusammengeführt habe, hat Discourse die SSO-Anmeldedaten des Zielkontos (das zusammengeführt wurde / nicht gelöscht wurde) beibehalten, und das andere Konto wurde gelöscht.

Vielen Dank für deine Hilfe dabei. : )