[ETA обновляется в конце с моим текущим решением]пользователя Force сбросить пароль при первом входе с Devise
Я хочу, чтобы иметь возможность вручную создавать учетные записи для пользователей с высокой добавленной стоимостью, а это означает, что мы должны сгенерировать пароль их и заставить их изменить его при первом входе в систему. Я нашел решение для этого here, но, похоже, он работает вокруг Devise, а не с ним.
Моего текущее усилие, чтобы перезаписать метод #after_confirmation_path_for в DEViSE ConfirmationsController так, что она включает в себя этот фрагмент:
if resource.sign_in_count == 1
resource.send(:set_reset_password_token)
edit_password_path(resource, reset_password_token: @token)
else
# etc
end
Но когда он идет по пути, он перенаправляет от смены пароля, казалось бы, из-за эта линия в DEViSE :: PasswordsController:
# Render the #edit only if coming from a reset password email link
append_before_filter :assert_reset_token_passed, only: :edit
Так что я мог перезаписать этот вызов, но я настороженно о том, почему он был там в первую очередь, и является ли это может вызвать другие проблемы - даже если нет, то это чувствует, что я d довольно много взлома, чтобы включить сценарий, который, как я мог бы себе представить, относительно распространен. Есть ли еще способ Devise-y подойти к этому?
ETA: Я сделал это успешно пропустить фильтры со следующим кодом:
class PasswordsController < Devise::PasswordsController
skip_before_filter :require_no_authentication,
:assert_reset_token_passed,
only: :edit
end
Это работает в соответствующем пользовательском пути, но это приложение с относительно небольшого числа приемочных испытаний, поэтому я m немного настороженно, что это будет иметь нокаутирующие эффекты в другом месте - как неожиданно требующие от пользователей изменения пароля в каком-то другом путешествии пользователя.
Может ли кто-нибудь консультировать, нормально ли использовать этот подход или есть более безопасная альтернатива?
Посмотрите [здесь] (http://stackoverflow.com/a/29416605/1520965), кажется, ответ на ваш вопрос –
Мы хотим послать их на экран сброса пароля Devise, а не направлять их на полное редактирование профиля. – Arepo