Reenviar e-mail de ativação - Erro 404

Quando um usuário se cadastra, o e-mail de ativação funciona bem. No entanto, tentar fazer login e reenviar os e-mails de ativação resulta no seguinte log de produção:

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)

Este erro ocorre em todos os contêineres executando 3.2.0.beta1-dev. O arquivo “production_errors.log” está vazio.

Passos para reproduzir:

  1. Cadastre-se com o formulário padrão
  2. Ignore o e-mail de ativação e tente fazer login
  3. Clique em “Reenviar E-mail de Ativação” no popup “Você ainda não pode fazer login. Enviamos um e-mail de ativação anteriormente para você…”
  4. “Ocorreu um erro: O URL ou recurso solicitado não pôde ser encontrado.”
  5. Clique em “OK” e então o seguinte popup aparece “Enviamos outro e-mail de ativação para você em…” (No entanto, o segundo e-mail de ativação não é realmente enviado)

Vejo que a função/ação send_activation_email tem limite de taxa.

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

Isso resultaria no erro 404? Existem outros logs que eu possa verificar para depurar este problema?

1 curtida

Estou testando isso no meu site de desenvolvimento local, o problema parece ser que nenhum dos parâmetros username ou email é definido para a solicitação POST que é feita para /u/action/send_activation_email quando a solicitação é feita depois que um usuário que não clicou no link no e-mail de ativação tenta fazer login com nome de usuário/senha:

Se, em vez disso, o usuário clicar no botão Reenviar E-mail de Ativação na página de conta criada que é exibida imediatamente após o registro de uma conta, o parâmetro username é definido para a solicitação. Para referência, o botão que está funcionando é este:

Minha suposição sobre o que está acontecendo é que, para a solicitação que está funcionando, os parâmetros para a solicitação POST estão sendo definidos com base nos valores que o usuário insere ao preencher o formulário de inscrição.

O erro 404 está sendo acionado aqui:

1 curtida

Isso me parece um bug.

Apenas adicionando uma observação de que este problema também impede que usuários que tiveram suas contas desativadas em sua página de admin/usuários acionem o e-mail de ativação após tentarem fazer login e clicarem no botão “Reenviar E-mail de Ativação”.

Isso causa o mesmo erro que foi relatado acima.

2 curtidas

Obrigado pelo relatório @john.sanchirico, e também @simon pela análise detalhada :pray:

Isso será corrigido por

2 curtidas

Este tópico foi fechado automaticamente após 20 horas. Novas respostas não são mais permitidas.