Разработать - не хочу открывать страницу сброса пароля, если токен недействителен - PullRequest
0 голосов
/ 12 февраля 2019

Я использую devise gem.

Я не хочу открывать страницу сброса пароля (полученную на мою электронную почту), если Devise forget_password_token недействительно илиуже используется.

Прямо сейчас по умолчанию, он просит меня добавить новый пароль и подтверждение пароля, а затем, когда я отправляю, он говорит "токен истек"

Я просто хочу добавить концепцию истечения срока действия пароля для сброса устройства, отправленного по электронной почте.

Пожалуйста, помогите!

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Я не уверен, какую версию устройства вы используете.Поэтому я объясню свою идею ссылкой на devise 3.2.4.

В devise есть модуль, который называется Recoverable.Вы можете посмотреть на это здесь .В этом модуле вы можете найти метод reset_password_period_valid?

Он выглядит так:

def reset_password_period_valid?
  reset_password_sent_at && reset_password_sent_at.utc >= self.class.reset_password_within.ago.utc
end

Вы можете начать с этого метода.Второе - это работа с методами в специальном контроллере, посмотрите на PasswordsController в devise.Вы можете посмотреть на это здесь .

Методы, которые вы можете перезаписать или изменить:

# GET /resource/password/edit?reset_password_token=abcdef
def edit
  self.resource = resource_class.new
  resource.reset_password_token = params[:reset_password_token]
end

# PUT /resource/password
def update
  self.resource = resource_class.reset_password_by_token(resource_params)
  yield resource if block_given?

  if resource.errors.empty?
    resource.unlock_access! if unlockable?(resource)
    flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
    set_flash_message(:notice, flash_message) if is_flashing_format?
    sign_in(resource_name, resource)
    respond_with resource, location: after_resetting_password_path_for(resource)
  else
    respond_with resource
  end
end
...