Wie kann ich eine sekundäre E-Mail-Adresse automatisch bestätigen?

Ich habe ein paar Themen gesehen, die dieses Problem berühren, aber nichts scheint es wirklich anzusprechen.

Im Grunde wurde unser Unternehmen übernommen. Das bedeutet, dass alle Benutzer von @old_company.com zu @new_company.com wechseln.

Ich habe eine Zuordnung von alten zu neuen E-Mail-Adressen. Was ich tun möchte, ist, die E-Mail-Adresse @new_company.com für einen Benutzer hinzuzufügen und sie automatisch zu bestätigen. Andernfalls müssen sie die Bestätigungs-E-Mails selbst durchlaufen, was realistischerweise nicht passieren wird.

Gibt es eine Möglichkeit, als Administrator eine sekundäre E-Mail-Adresse hinzuzufügen und diese automatisch zu bestätigen?

Simon erwähnt Folgendes:

Aber es ist mir nicht klar, wie das funktioniert. Wie kann eine E-Mail-Adresse mit einem Konto synchronisiert werden, wenn die Adresse noch nicht bestätigt ist? Bedeutet das, dass ich:

  1. Eine sekundäre E-Mail-Adresse für den Benutzer über die API hinzufügen sollte/könnte
  2. (vielleicht) ausgehende E-Mails für 10 Minuten deaktivieren, damit keine Bestätigungs-E-Mail gesendet wird
  3. saml sync email aktivieren
  4. Benutzerkonten bestätigen und aktualisieren, wenn sie sich mit SAML anmelden

Hinweis: Wir wechseln in diesem Beispiel auch den SAML-Anbieter

Auch wenn die sekundäre E-Mail-Adresse noch nicht bestätigt wurde, bedeutet die obige Einrichtung, dass sie automatisch bestätigt und dem Konto zugeordnet wird, wenn sie sich zum ersten Mal mit der E-Mail-Adresse anmelden?

2 „Gefällt mir“

image

Nur zur Information: Ein Punkt, den ich missverstanden habe, war die Bestätigungs-E-Mail. Als Administrator erhalten Sie zwei E-Mails, eine zur Bestätigung Ihrer alten E-Mail und eine zweite zur Bestätigung der Änderung.

Ich ging davon aus, dass dies für alle Benutzer gilt, aber mit der Einstellung im obigen Bild können Sie festlegen, dass dies nur für Mitarbeiter gilt. Das bedeutet, dass Benutzer nur eine E-Mail zur Bestätigung der Änderung erhalten würden.

Ich muss noch herausfinden, wie ich die E-Mail für den Benutzer automatisch bestätigen kann :thinking:

1 „Gefällt mir“

Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, dies automatisch über die Benutzeroberfläche/API zu bestätigen. :thinking: Ich glaube, wenn SSO vorhanden ist, wird die E-Mail-/Identitätsbestätigung von ihnen übernommen? In diesem Fall würde die Verwendung von sso_sync die bereits bestätigten Daten/E-Mails abrufen und diese als „vertrauenswürdig“ verwenden.


Ein wenig Faktenprüfung später… :slight_smile:

Der Endpunkt /admin/users/sync_sso ist nur für DiscourseConnect. Ich glaube, das wussten Sie bereits, aber ich sage es laut für alle, die dies später lesen.

Aber es gibt auch die Admin-Einstellung auth_overrides_emails, die dafür nützlich sein könnte.

Im Wesentlichen, wenn Ihr SAML-Anbieter eine verifizierte E-Mail sendet und auth_overrides_emails gesetzt ist, beginnt Discourse, die neue E-Mail ohne jegliche Bestätigung zu verwenden. :+1:

2 „Gefällt mir“

Dies ist keine direkte Antwort auf Ihre Frage, aber: Im Falle einer Massenumbenennung von E-Mail-Adressen könnten Sie dies über die Rails-Konsole tun:

o = "@old_company.com"
n = "@new_company.com"
UserEmail.where("email LIKE ?", "%#{o}").each do |ue|
  ue.email.sub!(o, n)
  ue.save!
end

Wenn Sie es vorziehen, eine sekundäre E-Mail-Adresse hinzuzufügen:

o = "@old_company.com"
n = "@new_company.com"

UserEmail.where("email LIKE ?", "%#{o}").each do |ue|
  sm = UserEmail.new
  sm.user_id = ue.id
  sm.email = ue.email.sub!(o, n)
  sm.save!
end
1 „Gefällt mir“

Vielen Dank für die Vorschläge. Ich habe sie wie folgt ausprobiert:

1. Sekundäre E-Mail per API zum Benutzer hinzufügen

Die E-Mail ist unbestätigt, aber mit dem Konto verknüpft

2. Folgende Einstellungen konfigurieren:

image

image

image

  • Ich habe vergessen, die SAML-Synchronisierung auf true zu setzen, aber ich glaube nicht, dass dies das Ergebnis beeinflusst hätte. Das Problem scheint immer noch ein Konflikt in Bezug auf die E-Mail-Bestätigung zu sein.

3. Ergebnis

Das Ergebnis war, dass ein neues Benutzerkonto basierend auf der neuen Firmen-E-Mail erstellt wurde. Im schlimmsten Fall könnte ich diese zusammenführen, aber das ist ein wirklich übler Worst Case.

Ich kann die unbestätigte E-Mail immer noch im alten Konto sehen. Ich versuche, die Bestätigung erneut zu senden, nur um zu sehen, was passiert, aber ich erhalte einen 403-Fehler (Forbidden).

Es scheint, dass die E-Mail zuerst bestätigt werden muss, bevor wir sie synchronisieren können :confused:

Wenn ich nichts übersehe, benötige ich eine Möglichkeit, die zweite E-Mail zu bestätigen.

Ich frage mich, ob dies immer noch das gleiche Problem in Bezug auf die Bestätigung hat oder ob sie als bestätigt angenommen werden. Eine zusätzliche Komplexität besteht darin, dass sich auch der Benutzerteil von user@company.com geändert hat. Aber ich vermute, das würde bedeuten, dass wir eine CSV-Datei mit Zuordnungen zwischen den alten und neuen E-Mails durchgehen.

Ich dachte eher daran, die E-Mail in der SSO zu ändern, auth overrides emails zu aktivieren und sich dann wie gewohnt über Ihre SSO bei Ihrem Konto anzumelden.

Vielleicht übersehe ich etwas.

1 „Gefällt mir“

Ich glaube, es macht das, indem es ein SAML-Konto basierend auf der E-Mail-Adresse und dem SAML-Server validiert, der zum Einloggen verwendet wird. Das Problem ist, dass es sich um einen völlig anderen SAML IDP (New Company) handelt.

Folglich überschreibt/erstellt es korrekt die E-Mail als SAML-E-Mail, aber es tut dies für ein brandneues Konto, da das Discourse-Konto nicht mit der neuen E-Mail-Adresse verknüpft ist.

Wenn das bestehende Konto jedoch bereits die neue SAML-E-Mail-Adresse in Discourse bestätigt hat, dann ist der Login reibungslos und es wird zu seiner neuen SAML-Login-E-Mail.

Hmmm. :thinking: Ich glaube, ich ging vielleicht davon aus, dass die Umstellung auf die neue IDP sie anhand einer externen ID oder Ähnlichem zugeordnet hätte.

Ich denke, es ist möglich, die E-Mail über die Rails-Konsole zu aktivieren/bestätigen, indem auch die Token-Informationen hinzugefügt werden. So etwas wie:

old_domain = "<insert_here_the_old_domain>"
new_domain = "<insert_here_the_new_domain>"

users = UserEmail.where("email like '%" + old_domain + "'")

users.each do |user_email|
    user = User.find_by_id(user_email.user_id)
    user.email = user.email.gsub(old_domain, new_domain)
    user.email_tokens.create(email: user.email)
    user.activate
    user.save!
    puts "."
end
2 „Gefällt mir“

Nach meinem besten Wissen ist dies nicht geschehen. Für eine andere Plattform mussten wir die E-Mails selbst auflisten und die Zuordnung vornehmen.

Es sieht immer mehr danach aus, dass dies der richtige Weg ist. Wir werden von Ihnen gehostet, daher werde ich dies an unseren CSM weitergeben und diesen Thread mit Fortschritten verfolgen.

2 „Gefällt mir“