Quando un utente si iscrive, l’email di attivazione funziona correttamente. Tuttavia, tentare di accedere e reinviare le email di attivazione genera il seguente log di produzione:
Started POST "/u/action/send_activation_email" for (removed ip and timestamp)
Processing by UsersController#send_activation_email as */*
Completed 404 Not Found in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 542)
Questo errore si verifica su tutti i container che eseguono 3.2.0.beta1-dev. “production_errors.log” è vuoto.
Passaggi per riprodurre:
Iscriviti con il modulo predefinito
Ignora l’email di attivazione e tenta di accedere
Fai clic su “Reinvia email di attivazione” nel popup “Non puoi ancora accedere. Ti abbiamo precedentemente inviato un’email di attivazione a…”
“Si è verificato un errore: l’URL o la risorsa richiesta non è stata trovata.”
Fai clic su “OK” e quindi appare il seguente popup “Ti abbiamo inviato un’altra email di attivazione a…” (Tuttavia, la seconda email di attivazione non viene effettivamente inviata)
Vedo che la funzione/azione send_activation_email è soggetta a limitazione della frequenza.
def send_activation_email
if current_user.blank? || !current_user.staff?
RateLimiter.new(nil, "activate-hr-#{request.remote_ip}", 30, 1.hour).performed!
RateLimiter.new(nil, "activate-min-#{request.remote_ip}", 6, 1.minute).performed!
end
Ciò comporterebbe l’errore 404? Ci sono altri log che posso consultare per risolvere questo problema?
Sto testando questo sul mio sito di sviluppo locale, il problema sembra essere che né i parametri username né email vengono impostati per la richiesta POST effettuata a /u/action/send_activation_email quando la richiesta viene effettuata dopo che un utente che non ha cliccato sul link nell’email di attivazione tenta di accedere con nome utente/password:
Se, invece, l’utente clicca sul pulsante “Reinvio email di attivazione” dalla pagina “account creato” che viene visualizzata immediatamente dopo la registrazione di un account, il parametro username viene impostato per la richiesta. Per riferimento, il pulsante che funziona è questo:
La mia ipotesi su ciò che sta accadendo è che per la richiesta che funziona, i parametri per la richiesta POST vengono impostati in base ai valori inseriti dall’utente quando completa il modulo di registrazione.
Aggiungo solo una nota che questo problema impedisce anche agli utenti i cui account sono stati disattivati dalla loro pagina admin/utenti di attivare l’email di attivazione dopo aver tentato di accedere e aver fatto clic sul pulsante “Invia nuovamente email di attivazione”.