首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Devise -如果用户已停用,则显示页面以允许他们重新激活

Devise -如果用户已停用,则显示页面以允许他们重新激活
EN

Stack Overflow用户
提问于 2018-05-08 12:39:48
回答 1查看 228关注 0票数 0

我遵循了以下文章中的教程,了解如何停用用户:https://github.com/plataformatec/devise/wiki/How-to:-Soft-delete-a-user-when-user-deletes-account

我的问题是,我如何让停用的用户登录时,它会显示一个页面,允许重新激活他们的帐户?即:“用户/重新激活”用一个按钮来重新激活?

当然,我知道我必须重写默认的用户会话控制器,但我不太确定active_for_authentication在什么时候被调用,如何调用,以及如何重写重定向。

EN

回答 1

Stack Overflow用户

发布于 2018-05-08 13:26:06

当用户尝试登录时,请求将被路由到sessions_controller.rbcreate方法,在该方法中,如果凭据有效,则为该用户创建一个会话。在该方法中,您只需检查deleted_at列是否已填充,然后执行一些分支逻辑,以重定向到有效登录所拥有的任何登录页面或重新激活页面。

您的代码看起来类似于下面的示例,但是同样,您没有提供实现细节,因此需要您进行调整:

代码语言:javascript
复制
  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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50225933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档