2014-10-20 68 views
0

(使用Rails 4,惨惨1.6.10)惨惨:用户可以看到它的后台放映视图

您好所有,

我有两个UsersController:一为前,/backoffice下对方的背,并且两者都使用相同的User模型。

我定义的能力为“普通用户”是这样的:

can(:manage, User) do |u| 
    u == user 
end 

,而管理员用户将能够管理所有用户:

can :manage, User 

我也有两个“秀”的意见,一个在前面:/users/:id和一个在后台:/backoffice/users/:id

我的问题是,有限的用户今天可以通过退避看到它的配置文件冰URL,因为他“可以管理这个用户”。 (当然这是不可接受的)

我知道这不应该太难以纠正,但您会使用什么解决方案?

回答

0

似乎有一种方法来命名空间的能力。请参阅继续项目CanCanCan的Wiki条目:https://github.com/CanCanCommunity/cancancan/wiki/Authorization-for-Namespaced-Controllers

它基本上所做的是覆盖Ability类以传递由ApplicationController确定的名称空间。 Ability类有两个不同的规则集,具体取决于使用它初始化的名称空间。

+0

谢谢塞巴斯蒂安,这就是我一直在寻找的东西。我不觉得这个方法真的很性感,所以我稍微等待一些答案。如果没有更好的答案,我会接受你的。 – mtreize 2014-10-20 13:42:25

+0

没问题。我想说,'能力'类的扩展是正常的。命名空间的确定虽然很不方便。 – 2014-10-21 06:26:41