问题标签 [rolify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
100 浏览

ruby-on-rails - 如何检查最低权限并以 DRY 方式允许所有父角色权限?

假设我有 4 个角色:user, agent, admin, superadmin.

每个角色随后对我的应用程序中的所有对象拥有更多权限。

我正在使用 Rolify、CanCan 和 Devise。

我想做的是,每当我想启用某些东西时-说:

我希望该链接显示此人是 anadmin还是superadmin. 我知道我可以简单地做一个||- 但这似乎不是很干,特别是因为我必须做current_user.has_role? :superadmin || current_user.has_role? :admin

agent, admin & superadmin想象一下,我想访问一些链接/资产。

我如何以干燥的方式做到这一点?

0 投票
1 回答
1524 浏览

ruby-on-rails - 如果用户模型定义了资源,则 Rolify with_all_roles 不起作用

我想从用户模型中获取一个说版主的列表,它在这种情况下有效

但是如果我像这样将资源分配给用户模型,它不会列出具有角色主持人的用户

更新

post.rb

用户.rb

0 投票
2 回答
1081 浏览

ruby-on-rails - 一项 rspec 角色测试失败,但几乎相同的测试成功

我刚刚添加了Rolify gem,并且正在运行一些 rspec 测试。

2个测试如下:

测试结果是:

工厂.rb

第一个测试如何以 nil 对象失败,但第二个测试通过?

编辑

进一步检查后,任何测试should be_true通过,任何测试should be_false失败,无论添加的角色是否与检查的角色匹配。

0 投票
1 回答
621 浏览

ruby-on-rails - CanCan accessibly_by 在规范和控制器中返回不同的响应

我正在尝试测试Farm模型的用户身份验证,在这种情况下,该:user角色在登录时具有对所有场的读取权限(因为来宾用户也就是匿名的)。

...

...

问题

当我检查时,farms_json我可以看到它只包含Testfarm. 当我检查时,last_response我可以看到它同时包含Testfarm Access denied。这很奇怪,因为我accessible_by在规范和index操作中都使用了相同的方法。我使用的设置在名为Fetching Records的 CanCan gem 的 wiki 中进行了描述。

无用的解决方法

当我将用户添加user到农场Access denied时,例如...

...然后测试成功。

问题

  1. 为什么任何用户(包括来宾用户)都可以读取“拒绝访问”场,但它没有返回?
  2. 是否get "#{url}.json"真的考虑了用户的状态?这一切都是由load_and_authorize_resourcein 完成的FarmsController吗?
  3. wiki 提到可以@farms = Farm.accessible_by(current_ability, :read)省略,因为“这是由索引操作自动完成的load_resource”。这适用于我的情况吗?

实验

我创建了另一个用户“user2”和另一个农场“我的小农场”。我把它们联系起来了。这样,示例中的数据库总共包含三个农场:

  • 与 user1 关联的场“Testfarm”
  • 场“拒绝访问”与无用户关联
  • 与 user2 关联的农场“我的小农场”。

当我跑步时,Farm.accessible_by(Ability.new(user1), :read)我仍然只收到“Testfarm”。

0 投票
1 回答
259 浏览

ruby-on-rails - 在用户和位置创建上分配管理员

我有一个用于用户注册的嵌套模型表单,它同时创建一个用户和一个位置。我希望自动为创建位置的用户分配管理员角色。我正在使用设计/cancan/rolify。关于如何做到这一点的任何想法?

能力模型

位置模型

用户模型

好榜样

最后,注册表格

0 投票
1 回答
892 浏览

ruby-on-rails - CanCan/Rolify:模型上用户的读取权限被拒绝

我使用CanCanrolify为 Farm 模型设置访问权限。

我使用此处列出的一些测试数据为我的应用程序播种:

我在 Rails 控制台中运行以下命令来找出用户可以访问(只读)哪些农场:

请注意 user1 没有分配角色。

问题:为什么 user2 不能访问中定义的所有场ability.rb

0 投票
1 回答
616 浏览

ruby-on-rails - 向 Rails Composer、Devise、CanCan、Twitter Bootstrap 添加角色

我正在制作一个从Rails Composer、Devise、CanCan、Twitter Bootstrap 开始的应用程序。

我知道如何使用能力模型设置用户权限。如何添加更多角色以赋予某些权限?

0 投票
4 回答
2880 浏览

ruby-on-rails - Devise / Rolify / CanCan 2.0:防止用户更改用户角色

我使用 Devise 进行身份验证,使用 Rolify 进行角色管理,使用 CanCan 2.0 进行授权。

我试图允许 :admin 角色更改用户的角色,但不允许所有其他用户访问。

这是我尝试过但不起作用的方法:

我故意在我的用户表单中留下了关联:

控制器

和模型:

现在,如果具有 :moderator 角色的用户尝试更改其他用户(或他自己)的角色,则会发生以下情况:

  1. 抛出 CanCan::Unauthorized 异常并将用户重定向到 root_url
  2. 为用户更改角色

我很困惑。如果发生异常,为什么还要进行更改?我可能做错了什么:)

我已经尝试根据 users_controller.rb 中的用户角色操作查询参数如果我在 def 更新后立即放置日志语句,这是我的输出:

我一定是忽略了什么...

0 投票
1 回答
313 浏览

ruby-on-rails-3 - 通过 has_and_belongs_to_many 关系向具有 Cancan 和 Rolify 的用户授予访问权限

我得到了拥有许多代理的 Partenaires 资源和拥有许多代理的用户。

我想通过 Cancan & Rolify 限制每个 Partenaire 的访问权限。

我发现这样做的唯一技巧是评估 user.agence_ids 和 partenaire.agence_ids 的数组大小,以及它是否大于或等于 1,以便用户可以访问 Partenaire。

我做了自定义操作来将我的索引视图过滤到我的 Partenaires_controller 中。

如果 Partenaire 和用户至少有一个共同的代理,是否可以授予用户访问权限?

Partenaires_controller.rb

用户.rb

代理.rb

Partenaire.rb

0 投票
1 回答
53 浏览

ruby-on-rails - 如何限制角色看不到产品的价格?

我有一个Product模型,如果用户以guest角色身份登录或未登录,我不希望他们能够在我的应用程序中看到产品的价格。

我正在使用 Devise、CanCan 和 Rolify。

我试过这个,在我的ability.rb

但这似乎不起作用。我没有在我的视图中添加任何代码 - 我需要这样做吗,还是这个ability类根本不显示价格?