Rails应用程序中公司特定的用户权限

时间:2019-01-07 21:44:29

标签: ruby-on-rails ruby ruby-on-rails-4 authorization pundit

我的应用程序使用Devise进行身份验证,使用CanCanCan进行授权,使用RailsAdmin进行管理。当前,有些用户被认为是“管理员”,他们可以访问应用程序中的任何内容,还有其他几种类型的用户,基本上都是具有少量特权的管理员,所有这些都在Ability.rb文件中定义。

但是,现在我需要为用户实现公司级权限。现在,管理员可以在应用程序中访问任何公司。展望未来,我需要为公司所有者增加向其公司添加/邀请用户并为其授予某些权限的能力。该用户还可能具有不同权限,而可能属于该应用程序中的其他公司。

这是CanCanCan可以“做”的事情吗?还是这是Pundit的工作?还有其他东西吗?

我在网上看到的有关CCC和Pundit的所有教程和文档都涉及应用程序范围的权限。但是我需要更精细的控制。

例如,我的应用程序有数百家公司。每个公司都有一个“所有者”用户,他们每天登录以查看其收入信息。该所有者/用户希望邀请Joe Smith加入该应用程序,以便他们也可以查看数据并进行更改。但是他们不希望Joe Smith能够看到某些类型的数据。因此,我们限制Joe Smith访问该公司的某些数据。

这与我目前使用的CanCanCan完全不同,后者是为管理员设置访问权限,以便管理员用户可以查看任何公司的信息并在全球范围内进行更改。

我很想知道以前是否有人遇到过此问题,以及他们可能使用过什么解决方案。我非常感谢任何建议/智慧!

1 个答案:

答案 0 :(得分:0)

是的,CanCanCan可以实现。您可以将权限范围限制为特定的company_id。假设Admin模型具有company_id,您可以编写:

can :manage, Company, :id => admin.company_id