I have migrated users from old forum database. Is there any way to send password reset e-mails in bulk? I’ve tried to use API but got You have performed this action too many times, try again later. after requesting to send about 3 reset emails… (other API actions work fine)
I’d be happy to use ruby console or API if you can please advise how to go around that rate limit. It is probably limit per IP address as I’ve investigated.
[updated]
Seems like RateLimiter for ‘forgot_password’ is unfortunately hardcoded so I went ruby script way…
For mass reseting (sending out tokens for password reset to all users) you can do
cd /var/discourse
./launcher enter app
Then create new file mass-password-reset.rb using your favourite editor with following script:
User.all.each do |u|
email_token = u.email_tokens.create(email: u.email)
Jobs.enqueue(:critical_user_email, type: :forgot_password, user_id: u.id, email_token: email_token.token)
sleep(5)
end
And then run it with rails r mass-password-reset.rb
Awesome, thanks! I recently migrated data from my old forum and when tried to manually reset passwords for my users (not too many of them), ran into error message. Discourse logs didn’t show anything, tried to rebuild app and it didn’t help. Then tried your script and now via outsourced email sending service (and Sidekiq) I see that these mails are sending out. So, thanks again!
Eu acho que a melhor opção ainda é fazer com que eles redefinam a senha através do link de redefinição de senha. Há alguma razão pela qual seu usuário não pode fazer isso?
Não, seria apenas uma questão de experiência do usuário. Estamos migrando nosso antigo fórum vanilla e acho que a melhor experiência para os usuários antigos seria receber um e-mail dizendo “Ei, migramos do nosso fórum para uma nova plataforma. Você pode fazer login através deste link: {link}”.
Ah, desculpe, eu queria ter voltado a isso ontem quando percebi que você queria fazer um em massa e não um único. Fico feliz que você tenha descoberto.
Vou dividir este problema para facilitar a localização em pesquisas futuras.
Olá, não sei se este ainda é o melhor lugar para perguntar isso, mas você saberia me dizer por quanto tempo o e-mail de redefinição de senha dura? Sei que expira em 3 ou 4 dias, mas preciso saber porque vou convidar meus usuários de um fórum antigo e preciso enviar uma mensagem notificando-os de que o e-mail pode expirar após n dias, então preciso do tempo específico. Obrigado.
Como executamos este comando por usuário ou apenas para uma lista de usuários em um arquivo de texto? Tenho cerca de 8000 usuários para migrar. Estou criando os usuários sem problemas com a API, mas os e-mails não são enviados devido à limitação de taxa codificada. Também defini meu endereço IP para ACEITAR no IP Filtrado, mas ainda não funciona. Isso é algo que só pode ser feito no console do Rails?
Eu acho que usar um script de importação seria uma ideia melhor para criar tantos usuários, mas isso está fora do tópico
De qualquer forma, você atingiria o limite de taxa se enviasse o e-mail no script também.
Se você quiser diminuir a velocidade do processo de envio de e-mail, pode adicionar um sleep(x) (x em segundos) no loop ruby, e ele deve ser adaptado aos limites de taxa existentes.
Se você pretende deixar seu script rodando por um tempo, use um gerenciador de sessão como screen ou tmux.
user = User.find_by(username: 'alehandrof')
if user
email_token = user.email_tokens.create(email: user.email)
Jobs.enqueue(:critical_user_email, type: :forgot_password, user_id: user.id, email_token: email_token.token)
end
Não há necessidade de criar um arquivo Ruby para isso; você pode executá-lo no console Rails (./launcher enter app e depois rails c).