Por que o Devise não permite que usuários não confirmados façam login mesmo quando o allow_unconfirmed_access_for está definido?
Temos uma base de usuários existente e estamos adicionando uma confirmação por e-mail. A confirmação é opcional, mas permitirá recursos adicionais. Os usuários não precisam confirmar. Eu adicionei o módulo confirmble e executei migrações. A confirmação funciona conforme anunciado.
Mas os usuários não podem fazer login, pois não estão confirmados. Todos os usuários atuais têm valores de confirmação nulos, que é o que queremos (os usuários podem voltar e confirmar seu email a qualquer momento). Eu segui todos os artigos wiki do Devise e configurei allow_unconfirmed_access_for no inicializador:
config.allow_unconfirmed_access_for = 10.years
Eu também tentei configurá-lo em nosso modelo de usuário também:
devise :confirmable, allow_unconfirmed_access_for: 10.years
Eu também tentei usar outros valores (1. ano, 500 dias, etc.)
My SessionsController, que não difere muito do método de Devise (aqui no github)
class Users::SessionsController < Devise::SessionsController
respond_to :json
def new
redirect_to "/#login"
end
def create
resource = warden.authenticate(auth_options)
if !resource
render json: {error: "Invalid email or password" }, status: 401 and return
end
sign_in(resource_name, resource)
render "sign_in", formats: [:json], locals: { object: resource }
end
end
Resposta do Devise:
{"error": "Você precisa confirmar sua conta antes de continuar."}
Devise 2.1.2 com Rails 3.2.9.