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?

Necromancia em Massa, sim, mas estou enfrentando um problema semelhante e, como a pesquisa me trouxe até aqui, pode ser relevante atualizar os comandos com base nessa experiência.

Minha situação é a seguinte:

  • Alguns dos meus usuários tentaram alterar seu e-mail principal.

  • Eles afirmam que não funcionou. Dizem que receberam um e-mail para confirmar, mas ao clicar no link, sempre aparece uma mensagem de “Expirado/Não Funciona”.

  • Eu, como Administrador, vou alterar o referido e-mail, fazendo-o editando o perfil deles.

  • Agora, o e-mail principal está “aguardando confirmação/verificação”.

  • Os usuários não recebem nenhum e-mail de confirmação.

  • Não importa quantas vezes eu pressione a opção “reenviar e-mail de validação/confirmação” no perfil deles, nada é enviado (verifiquei na seção de Admin/E-mail, não há e-mail de saída para isso. Ironicamente, se eu clicar para enviar o “e-mail de redefinição de senha”, esse sim é enviado).

O problema é que, se qualquer um desses usuários limpar os cookies/etc, não conseguirá acessar sua conta novamente (isso está acontecendo agora mesmo). Então, tentei o seguinte:

Mas estou recebendo NoMethodError: undefined method `update' for nil:NilClass. Então, talvez os campos tenham mudado novamente nos últimos dois anos? :stuck_out_tongue:

Qualquer ajuda é bem-vinda.

PD: Além disso, se eu tentar alterar o e-mail para algo diferente ou para o antigo, agora eu (admin) recebo a mensagem “Você realizou esta ação muitas vezes. Por favor, tente novamente mais tarde”. Quanto tempo é “mais tarde” e por que o Administrador está limitado em taxa ao alterar e-mails, se eu só fiz isso uma vez? Provavelmente fiz algo errado e não percebi :facepalm:

Então, a entrega de e-mails está funcionando; talvez a hora do servidor esteja errada/incorreta? Se a hora do seu servidor estiver errada, isso pode acontecer.

Funcionou para mim! Se você ainda estiver enfrentando esse problema (ou para qualquer outra pessoa que encontre este tópico :sweat_smile:), acho que você receberia esse erro se UserEmail.find_by(email: "oid@example.com") não retornasse nada. Vale a pena verificar se o endereço de e-mail corresponde exatamente.