Почему Devise не позволяет неподтвержденным пользователям войти в систему, даже если установлен параметр allow_unconfirmed_access_for?
У нас уже есть база пользователей, и мы добавляем подтверждение по электронной почте. Подтверждение не является обязательным, но позволит дополнительные функции. Пользователи не обязаны подтверждать. Я добавил подтверждающий модуль и провел миграцию. Подтверждение работает как рекламируется.
Но пользователи не могут войти, так как они не подтверждены. Все текущие пользователи имеют нулевые значения подтверждения, чего мы и хотим (пользователи могут вернуться и подтвердить свою электронную почту в любое время). Я следил за всеми статьями Devise wiki и установил allow_unconfirmed_access_for в инициализаторе:
config.allow_unconfirmed_access_for = 10.years
Я также попытался установить его в нашей пользовательской модели:
devise :confirmable, allow_unconfirmed_access_for: 10.years
Я также пытался использовать другие значения (1. год, 500 дней и т. Д.)
Мой SessionsController, который мало чем отличается от метода Devise (здесь на 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
Ответ разработчика:
{"error": "Вы должны подтвердить свою учетную запись, прежде чем продолжить."}
Разработать 2.1.2 с Rails 3.2.9.