问题标签 [pundit]

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 回答
1612 浏览

ruby-on-rails - 如何创建验证 Pundit 拒绝未登录用户的规范?

我正在使用 Pundit gem 对我的封闭系统 Ruby on Rails 应用程序进行授权(使用 Rails 4.1.5 和 Rspec 3.0)

我已将我的应用程序策略配置为在未按照 Pundit 文档中的建议定义用户时引发异常:

我如何编写一个规范来验证每个 Pundit 策略是否拒绝一个 nil 用户?

我做了以下尝试:

但它出错了

关于如何正确测试这个的任何建议?

0 投票
1 回答
880 浏览

ruby-on-rails - 访问取决于父模型时正确使用权威的方法

我有一个拥有多个联系人的客户端模型

用户是否可以创建、更新或编辑取决于客户端而不是联系人,而销毁取决于联系人本身。

在 ContactPolicy 类中,我可以简单地检查@contact.client 以查看用户是否可以访问,这很好。

但是对于 List 方法,我没有一个联系人,而是一个 @client.contacts 列表,因此没有简单的方法来告诉 Pundit 允许什么。

我不确定 Pundit 应该如何处理这个问题。

请注意,我不想要范围,因为它是是或否,具体取决于客户记录

0 投票
1 回答
4111 浏览

ruby-on-rails - Pundit- 管理员和用户的索引方法

所以,我正在尝试使用宝石专家。我只是想弄清楚如何为用户和管理员提供索引视图。我想为管理员呈现所有结果,只为用户呈现相关帖子。我已经在 github 上搜索和搜索,但我没有找到任何运气。我必须在我的策略和控制器中添加什么?

原始代码

控制器

第二次更新

控制器

第三次更新

控制器

**使用工作代码的最终更新**

控制器

0 投票
3 回答
958 浏览

ruby-on-rails - 如何使用默认的 app/policies/application_policy.rb?

当我创建一个新的脚手架时,我想使用它的默认权威配置,它在app/policies/application_policy.rb. 如果不创建一个model_name_policy.rb,我总是会unable to find policy出错。

当我没有为特定模型设置规则时,如何使用默认值?

0 投票
1 回答
1417 浏览

ruby-on-rails - 使用 Pundit 的各种角色的索引视图限制

我正在尝试为三个角色创建一个显示视图。管理员、超级用户和用户。管理员应该看到所有用户。超级用户应该只看到用户,用户不应该看到任何人。当我在 resolve for 中使用注释掉的策略方法时else user.super_user?会给我unsupported: TrueClass错误。欢迎任何建议。

用户控制器

用户政策

更新 的用户控制器


正确答案

我想出了我需要做什么。我错误地调用了这个角色。更新范围如下。

控制器

0 投票
1 回答
799 浏览

ruby-on-rails-4 - Rolify 和 Rails 4 角色管理

我正在尝试在我的 rails 4 应用程序中实现基于角色的访问系统,并且我希望最终用户(super_admin)能够通过 UI 编辑角色分配。

我已经取得了一些成功,但不禁感到必须有更好的方法(因为我是 Rails 新手)。这是我的代码:

在我的表单(HAML 和 simple_form)中:

我正在努力解决以下问题:

  1. 由于没有模型,如何验证表单条目?
  2. 我应该使用强参数吗?如果是,我如何在没有模型的表单上实现
  3. 我如何创建类似的东西,但已经检查了当前角色?(真正的角色管理)

更新我已经按照评论的建议使用了改革 Gem。这似乎是一个很好的解决方案。然而,我对这个案例的实施有疑问。

让我把它映射出来:我在数据库中有 3 个表:

  1. 用户
  2. users_roles(具有 2 个属性的映射表:user_id & role_id {Join Table -> HABTM})
  3. 角色

我想构建一个表单,其中包含角色模型中的所有值作为复选框。复选框应指示将哪些值输入 users_roles 表(与特定用户相关)。我想要改革做的是验证这个表单的输入。此表单将始终显示角色中的所有值,但可能未选中某些/所有框。

我在我的应用程序中创建了一个表单文件夹,并从以下代码开始:

我是否朝着正确的方向前进?

谢谢您的帮助。

0 投票
2 回答
924 浏览

ruby-on-rails - 限制权威人士对各种角色的看法

我正在跟进我之前遇到的问题。我能够让代码为三个角色工作,但我需要在组合中包含 4 个角色。

问题:我有 4 个角色(用户、业务用户、超级用户和管理员)。管理员可以访问所有内容(用户索引)。超级用户只能看到用户和业务用户(用户索引)。

错误:我有一个正常运行的应用程序,允许管理员访问所有内容,但我的超级用户只能看到用户(而不是业务用户)。我尝试切换用户策略解析方法,让超级用户role: 'business_user'查看它是否有效。好吧,它不起作用,它只显示我users(不是business_users)。这可能是我忽略的一个简单的红宝石问题。

用户政策

用户控制器

用户模型

0 投票
1 回答
726 浏览

ruby-on-rails-4 - Pundit 无法找到命名空间策略

我已经阅读了关于同一主题的几个问题,但没有一个能解决我的疑问或对我有用。

Pundit 无法在我的代码中找到命名空间策略,但我不明白为什么。我有一个“后端”命名空间,每当调用此“后端”中的items_controller.rb时,它都会使用app/policies/item_policy.rb,而不是app/policies/backend/item_policy.rb之一。

任何帮助将不胜感激。我在这个问题上花了很多时间。

我的app/policies/目录:

application_policy.rb

backend_policy.rb

后端/item_policy.rb

控制器/后端/items_controller.rb

0 投票
1 回答
53 浏览

ruby-on-rails - 抽象出常见的 rspec 功能

在我们的大量控制器测试中,我们必须像这样删除权威策略功能:

我的目标是最终得到类似的东西allow_policy(UserPolicy).to(:show?),它读起来更容易。

为了实现这一点,我编写了这个小模块,并将其包含在我的规范中。

不幸的是,您不能使用doubleallow在描述块之外使用,因此该模块不起作用。

我怎样才能完成类似的事情?

0 投票
1 回答
481 浏览

ruby-on-rails - 如何限制用户查看他们无权访问的页面?

我正在学习一门让我创建基本维基的课程。我绝对是新手。我需要限制用户简单地输入他们想直接在 URL 中查看的 wiki id(例如:wikis/5)。唯一能够查看 wiki 的人应该是该 wiki 的所有者、管理员或协作者。

我已经成功地限制了索引视图,以便登录用户只能看到他们自己的 wiki、公共 wiki 或他们合作的 wiki。

我试图在我的 WikiPolicy 中实现类似的代码,但它不起作用,我似乎找不到解决方案。如果用户登录,我现在的代码将显示 wiki。我知道我的逻辑是好的,因为我可以将 params[:id] 的值替换为“5”,它可以按预期工作。

这是我在 wiki_policy.rb 中使用的代码,用于返回一组特定用户有权查看的 wiki。我相信这是可行的,因为它正在查看所有 wiki,而不是依赖于用户试图查看的特定 wiki。