Rails + Devise - 有一种方法可以让用户BAN无法登录或重置密码? [英] Rails + Devise - Is there a way to BAN a user so they can't login or reset their password?

查看:122
本文介绍了Rails + Devise - 有一种方法可以让用户BAN无法登录或重置密码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有很多用户感谢设计,我想禁止一些问题制造者。 Devise是否有内置的支持?

I have a lot of users thanks to devise and I want to ban a few problem makers. Does Devise have this support built in?

谢谢

推荐答案

刚刚在我的项目中实现了这一点。我做的是类似于上面的Kleber,我在我的app / controllers / sessions_controller.rb(覆盖Devise)中定义了这个...

I just implemented this in my project myself. What I did was similar to Kleber above, I defined this in my app/controllers/sessions_controller.rb (overriding Devise)...

class SessionsController < Devise::SessionsController

protected

  def after_sign_in_path_for(resource)
    if resource.is_a?(User) && resource.banned?
      sign_out resource
      flash[:error] = "This account has been suspended for violation of...."
      root_path
    else
      super
    end
   end

end

然后我添加了一个布尔列对于被称为禁止的用户,所以主持人在后端编辑用户时检查复选框,布尔值将返回true。

And then I added a boolean column to Users called 'banned,' so the moderators check the checkbox when editing the user in the backend, and the boolean will return true.

但是有一个缺陷..如果用户已经登录,然后被禁止,他们仍然可以访问网站上的内容(评论等),直到他们的会话过期或注销。所以我在app / controllers / application_controller.rb中这样做了。

But there was one flaw...if a user was already logged in and then banned, they still had access to doing stuff on the site (comments, etc) at least until their session expired or they logged out. So I did this in the app/controllers/application_controller.rb...

class ApplicationController < ActionController::Base
  before_filter :banned?

  def banned?
    if current_user.present? && current_user.banned?
      sign_out current_user
      flash[:error] = "This account has been suspended...."
      root_path
    end
  end
end

如果检测到禁止,则会自动将其注销。无论如何,不​​知道这件事情是否是最好的方式,因为我更新的Rails,但整个事情对我而言,希望至少给你一个很好的开始。

That'll automatically log them out if a ban is detected. Anyway, not sure this whole thing is the "best" way to factor the whole thing as I'm newer to Rails, but the whole thing works for me and hope it will at least give you a good start.

这篇关于Rails + Devise - 有一种方法可以让用户BAN无法登录或重置密码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆