Rails + Devise - 有一种方法可以让用户BAN无法登录或重置密码? [英] Rails + Devise - Is there a way to BAN a user so they can't login or reset their password?
问题描述
我有很多用户感谢设计,我想禁止一些问题制造者。 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屋!