Dlaczego nie można wymyślić, aby niepotwierdzeni użytkownicy mogli się logować, nawet jeśli ustawiono allow_unconfirmed_access_for?
Mamy istniejącą bazę użytkowników i dodajemy potwierdzenie e-mailem. Potwierdzenie jest opcjonalne, ale umożliwi dodatkowe funkcje. Użytkownicy nie muszą potwierdzać. Dodałem potwierdzalny moduł i uruchomiłem migracje. Potwierdzenie działa jak w reklamie.
Ale użytkownicy nie mogą się zalogować, ponieważ nie są potwierdzeni. Wszyscy obecni użytkownicy mają wartości zerowe potwierdzające, co jest tym, czego chcemy (użytkownicy mogą wrócić i potwierdzić swój e-mail w dowolnym momencie). Śledziłem wszystkie artykuły wiki Devise i ustawiłem allow_unconfirmed_access_for w inicjatorze:
config.allow_unconfirmed_access_for = 10.years
Próbowałem również ustawić go w naszym modelu użytkownika:
devise :confirmable, allow_unconfirmed_access_for: 10.years
Próbowałem również użyć innych wartości (1. rok, 500 dni itd.)
Mój SessionsController, który nie różni się zbytnio od metody Devise'a (tutaj na githubie)
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
Odpowiedź Devise:
{"błąd": "Musisz potwierdzić swoje konto przed kontynuowaniem."}
Devise 2.1.2 z Rails 3.2.9.