设计/ Rails - 如何只允许管理员为其他人创建帐户?

时间:2011-03-14 19:15:18

标签: ruby-on-rails authorization devise

我正在使用设计作为我的身份验证解决方案,现在我正在考虑授权。在我的项目中,我(管理员)是唯一有权为其他人创建帐户的人。

我想知道是否有办法在没有太多黑客的情况下做到这一点。实际上,如果Devise已经登录,则Devise不允许用户访问注册页面。

感谢您的建议!

3 个答案:

答案 0 :(得分:9)

设置:skip => :registrations也会破坏用户编辑其用户信息的能力。如果这不是您的意思,您可以改为创建(最小)自定义注册控制器,只删除new_user_registration_path,同时保留edit_user_registration_path

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController

 def new
    # If you're not using CanCan, raise some other exception, or redirect as you please
    raise CanCan::AccessDenied
  end

end

# routes.rb
devise_for :users, :controllers => { :registrations => "registrations" }

执行此操作后,您还需要将目录views/devise/registrations移至views/registrations

答案 1 :(得分:3)

您可以将rails_admin gem与Devise一起使用来处理任何管理员特定的任务。您需要添加更多代码才能进行设置,但至少可以避免在更改与Devise的交互方面破解解决方案。

答案 2 :(得分:1)

实际上,在Devise的更高版本中,您可以从模型中删除“可注册”声明,它将为您解决此问题。