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!
Ciao, hai trovato qualcosa per risolvere questo problema? Stavo per provare quello script ma ho visto il tuo messaggio e ora mi chiedo se sei riuscito a risolvere la cosa.
Penso che l’opzione migliore sia ancora far loro reimpostare la password tramite il link di reimpostazione della password. C’è un motivo per cui il tuo utente non può farlo?
No, sarebbe solo una questione di esperienza utente. Abbiamo migrato il nostro vecchio forum vanilla e penso che la migliore esperienza per i vecchi utenti sarebbe ricevere un’email che dice “Ehi, siamo migrati dal nostro forum a una nuova piattaforma. Puoi accedere tramite questo link: {link}”.
Mi dispiace, volevo tornare su questo ieri quando mi sono reso conto che volevi fare una massa e non un singleton. Sono contento che tu l’abbia capito comunque.
Dividerò questo problema per renderlo più facile da trovare nelle ricerche future.
Ehi, non so se questo sia ancora il posto migliore per chiedere, ma sapresti dirmi per quanto tempo dura l’email per il recupero della password? So che scade in 3 o 4 giorni, ma ho bisogno di saperlo perché inviterò i miei utenti da un vecchio forum e dovrò inviare un messaggio per avvisarli che l’email potrebbe essere scaduta dopo n giorni, quindi ho bisogno dell’ora specifica. Saluti
Come possiamo eseguire questo comando per singolo utente o solo per un elenco di utenti in un file di testo? Ho circa 8000 utenti da trasferire. Sto creando gli utenti senza problemi con l’API, ma poi le email non vengono inviate a causa del limite di frequenza codificato. Ho anche impostato il mio indirizzo IP su ACCETTA nel Screened IP, ma ancora niente. È qualcosa che può essere fatto solo nella console di Rails?
Penso che l’uso di uno script di importazione sarebbe un’idea migliore per creare così tanti utenti, ma siamo fuori tema
Comunque, raggiungeresti il limite di frequenza se inviassi anche l’email nello script.
Se vuoi rallentare il processo di invio delle email, puoi aggiungere uno sleep(x) (x in secondi) nel ciclo ruby, e deve essere adattato a quali sono i limiti di frequenza.
Se intendi lasciare che il tuo script venga eseguito per un po’, usa un gestore di sessioni come screen o 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
Non c’è bisogno di creare un file Ruby per questo; puoi eseguirlo nella console Rails (./launcher enter app poi rails c).