Change user's email without verification

Maybe I’m missing something obvious, but I cannot find it. As an admin, can I change someone’s email address without them having to verify it?

Off-hand, I’d guess something like this would work:

cd /var/discourse
./launcher enter app
rails c
User.find_by(email: "chowder@mmmm.fooo").update(email: "bisque@soup.mmmm")
exit
exit

That’s console access, obviously.

I vaguely recall another topic here about this exact situation; try some searches.

Try this, the verification mail goes out, but they don’t have to respond to it:

Too late for me to edit that now, but it should be deactivate, change, reactivate iirc.

No problem I made it a wiki.

I am a new discourse user and I ran into the same issue. When I try the same approach (deactivate the user, update the email address, and then activate the user) it sending an email to confirm and it is only updating the email address after clicking the confirm email link. Is there a way to avoid this? I am using the API to do all the three actions.

There has been a change in the way emails are stored in the database.

The following commands should work:

cd /var/discourse
sudo ./launcher enter app
rails c

UserEmail.find_by(email: "oid@example.com").update(email: "new@example.com")

This will work fine but I am trying to do this via API as I will have to update multiple email addresses on a daily basis. Is it possible to do this via API?

Massive Nekromantie, ja, aber ich erlebe ein ähnliches Problem. Da die Suche mich hierher geführt hat, könnte es relevant sein, die Befehle basierend auf dieser Erfahrung zu aktualisieren.

Meine Situation sieht wie folgt aus:

  • Einige meiner Benutzer haben versucht, ihre Haupt-E-Mail-Adresse zu ändern.
  • Sie behaupten, es habe nicht funktioniert. Sie haben zwar eine E-Mail zur Bestätigung erhalten, aber beim Klicken auf den Link erscheint immer die Meldung „Abgelaufen/Funktioniert nicht“.
  • Ich gehe als Administrator zu der betreffenden E-Mail-Adresse und ändere sie durch Bearbeiten ihres Profils.
  • Nun steht bei der Haupt-E-Mail-Adresse „Wartet auf Bestätigung/Verifizierung“.
  • Die Benutzer erhalten keine Bestätigungs-E-Mail.
  • Egal wie oft ich die Option „Bestätigungs-E-Mail erneut senden“ in ihrem Profil anklicke, es wird nichts gesendet (ich habe im Admin/E-Mail-Bereich nachgesehen; es gibt keinen ausgehenden E-Mail-Versand dafür. Ironischerweise wird die E-Mail zum „Zurücksetzen des Passworts“, wenn ich darauf klicke, doch gesendet).

Das Problem ist: Wenn einer dieser Benutzer Cookies usw. löscht, kann er nicht mehr auf sein Konto zugreifen (das passiert gerade tatsächlich). Also habe ich Folgendes versucht:

Aber ich erhalte NoMethodError: undefined method `update' for nil:NilClass. Vielleicht haben sich die Felder in den letzten zwei Jahren erneut geändert? :stuck_out_tongue:

Jede Hilfe ist willkommen.

PD: Außerdem erhalte ich als Administrator die Meldung „Sie haben diese Aktion zu oft ausgeführt. Bitte versuchen Sie es später erneut“, wenn ich versuche, die E-Mail-Adresse auf etwas anderes oder auf die alte Adresse zu ändern. Wie lange ist „später“ und warum ist der Administrator bei der Änderung von E-Mail-Adressen drosselt, obwohl ich dies nur einmal durchgeführt habe? Ich habe wahrscheinlich etwas falsch gemacht und es nicht bemerkt :facepalm:

Die Zustellung der E-Mails funktioniert also, vielleicht ist die Serverzeit falsch? Wenn die Serverzeit nicht stimmt, kann das passieren.

Bei mir hat es funktioniert! Falls du immer noch dieses Problem hast (oder falls jemand anderes diesen Beitrag findet :sweat_smile:), denke ich, dass dieser Fehler auftritt, wenn UserEmail.find_by(email: "oid@example.com") nichts zurückgibt. Es könnte sich lohnen, noch einmal zu prüfen, ob die E-Mail-Adresse exakt übereinstimmt.