使用已登录的管理员用户通过Devise创建新用户

时间:2013-01-19 22:24:44

标签: ruby-on-rails ruby devise

我正在使用Devise在Rails上构建服务,这需要“管理员”用户将常规用户添加到他们的组织帐户。 Devise的默认行为不支持此功能,因为当登录的管理员用户尝试创建常规用户帐户时,将调用':require_no_authentication'方法。

实现我正在寻找的功能的推荐方法是什么?

  • :require_no_authentication由prepend_before_filter调用 Devise :: RegistrationsController类,而不是其中之一 RegistrationsController方法,所以我不知道这是否可以 被覆盖(如果我错了,请纠正我)。
  • 我认为将管理员用户与普通用户分开会 工作,但这些用户将分享非常相似的属性,所以我 相信这样做会增加不必要的重复。
  • 我目前正在尝试创建新的管理员用户(他们反过来创建 常规用户所属的组织)使用常规 使用'users#new'和'users#create'控制器设计注册流程 行动,并允许管理员通过'用户#add'添加新用户 动作。

如果可能有另一个更好的用户认证宝石更适合我的需求,我很乐意看看切换到那个。

1 个答案:

答案 0 :(得分:4)

这似乎更像是授权问题,而不是身份验证问题。您可以使用授权gem(例如cancan)为用户(例如admin)分配角色,并为这些角色授予权限。这与Devise一起非常有效。这是一个教程:

http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

编辑:我想我可能误解了你的问题。也许你需要的只是另一个控制器来处理Devise控制器之外的用户创建。您可以使用cancan将对此控制器的访问限制为仅限管理员。