Разработать - если пользователь деактивирован, показать страницу, чтобы разрешить их повторную активацию - PullRequest
0 голосов
/ 08 мая 2018

В следующей статье я ознакомился с руководством по деактивации пользователей: https://github.com/plataformatec/devise/wiki/How-to:-Soft-delete-a-user-when-user-deletes-account

Мой вопрос: как мне сделать так, чтобы, когда деактивированный пользователь входил в систему, он отображал страницу, позволяющую повторно активировать его учетную запись? IE: "пользователи / реактивировать" с кнопкой для реактивации?

Я знаю, что, конечно, мне нужно переписать контроллер сеансов пользователей по умолчанию, но я не совсем уверен, в какой момент или как вызывается active_for_authentication и как я могу перезаписать перенаправление.

1 Ответ

0 голосов
/ 08 мая 2018

Когда пользователь пытается войти в систему, запрос направляется в метод create вашего sessions_controller.rb, где создается сеанс для этого пользователя, если учетные данные действительны. В этом методе вам просто нужно проверить, заполнен ли столбец deleted_at, а затем некоторую логику ветвления, чтобы либо перенаправить на любую целевую страницу, которая у вас есть для действительных входов в систему, либо на страницу повторной активации.

Ваш код будет выглядеть примерно так, как в следующем примере, но, опять же, вы не предоставили подробности реализации, поэтому вам придется адаптировать:

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      unless user.deleted_at.nil?
        my_user_login_method
        redirect_to user # or redirect to a dashboard/landing page/whatever
      else
        render 'reactivate' # this would be a view for your reactivation page
      end
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...