问题标签 [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.
ruby-on-rails - 如何创建验证 Pundit 拒绝未登录用户的规范?
我正在使用 Pundit gem 对我的封闭系统 Ruby on Rails 应用程序进行授权(使用 Rails 4.1.5 和 Rspec 3.0)
我已将我的应用程序策略配置为在未按照 Pundit 文档中的建议定义用户时引发异常:
我如何编写一个规范来验证每个 Pundit 策略是否拒绝一个 nil 用户?
我做了以下尝试:
但它出错了
关于如何正确测试这个的任何建议?
ruby-on-rails - 访问取决于父模型时正确使用权威的方法
我有一个拥有多个联系人的客户端模型
用户是否可以创建、更新或编辑取决于客户端而不是联系人,而销毁取决于联系人本身。
在 ContactPolicy 类中,我可以简单地检查@contact.client 以查看用户是否可以访问,这很好。
但是对于 List 方法,我没有一个联系人,而是一个 @client.contacts 列表,因此没有简单的方法来告诉 Pundit 允许什么。
我不确定 Pundit 应该如何处理这个问题。
请注意,我不想要范围,因为它是是或否,具体取决于客户记录
ruby-on-rails - Pundit- 管理员和用户的索引方法
所以,我正在尝试使用宝石专家。我只是想弄清楚如何为用户和管理员提供索引视图。我想为管理员呈现所有结果,只为用户呈现相关帖子。我已经在 github 上搜索和搜索,但我没有找到任何运气。我必须在我的策略和控制器中添加什么?
原始代码
控制器
第二次更新
控制器
第三次更新
控制器
**使用工作代码的最终更新**
控制器
ruby-on-rails - 如何使用默认的 app/policies/application_policy.rb?
当我创建一个新的脚手架时,我想使用它的默认权威配置,它在app/policies/application_policy.rb
. 如果不创建一个model_name_policy.rb
,我总是会unable to find policy
出错。
当我没有为特定模型设置规则时,如何使用默认值?
ruby-on-rails - 使用 Pundit 的各种角色的索引视图限制
我正在尝试为三个角色创建一个显示视图。管理员、超级用户和用户。管理员应该看到所有用户。超级用户应该只看到用户,用户不应该看到任何人。当我在 resolve for 中使用注释掉的策略方法时else user.super_user?
会给我unsupported: TrueClass
错误。欢迎任何建议。
用户控制器
用户政策
更新 的用户控制器
正确答案
我想出了我需要做什么。我错误地调用了这个角色。更新范围如下。
控制器
ruby-on-rails-4 - Rolify 和 Rails 4 角色管理
我正在尝试在我的 rails 4 应用程序中实现基于角色的访问系统,并且我希望最终用户(super_admin)能够通过 UI 编辑角色分配。
我已经取得了一些成功,但不禁感到必须有更好的方法(因为我是 Rails 新手)。这是我的代码:
在我的表单(HAML 和 simple_form)中:
我正在努力解决以下问题:
- 由于没有模型,如何验证表单条目?
- 我应该使用强参数吗?如果是,我如何在没有模型的表单上实现
- 我如何创建类似的东西,但已经检查了当前角色?(真正的角色管理)
更新我已经按照评论的建议使用了改革 Gem。这似乎是一个很好的解决方案。然而,我对这个案例的实施有疑问。
让我把它映射出来:我在数据库中有 3 个表:
- 用户
- users_roles(具有 2 个属性的映射表:user_id & role_id {Join Table -> HABTM})
- 角色
我想构建一个表单,其中包含角色模型中的所有值作为复选框。复选框应指示将哪些值输入 users_roles 表(与特定用户相关)。我想要改革做的是验证这个表单的输入。此表单将始终显示角色中的所有值,但可能未选中某些/所有框。
我在我的应用程序中创建了一个表单文件夹,并从以下代码开始:
我是否朝着正确的方向前进?
谢谢您的帮助。
ruby-on-rails - 限制权威人士对各种角色的看法
我正在跟进我之前遇到的问题。我能够让代码为三个角色工作,但我需要在组合中包含 4 个角色。
问题:我有 4 个角色(用户、业务用户、超级用户和管理员)。管理员可以访问所有内容(用户索引)。超级用户只能看到用户和业务用户(用户索引)。
错误:我有一个正常运行的应用程序,允许管理员访问所有内容,但我的超级用户只能看到用户(而不是业务用户)。我尝试切换用户策略解析方法,让超级用户role: 'business_user'
查看它是否有效。好吧,它不起作用,它只显示我users
(不是business_users
)。这可能是我忽略的一个简单的红宝石问题。
用户政策
用户控制器
用户模型
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
ruby-on-rails - 抽象出常见的 rspec 功能
在我们的大量控制器测试中,我们必须像这样删除权威策略功能:
我的目标是最终得到类似的东西allow_policy(UserPolicy).to(:show?)
,它读起来更容易。
为了实现这一点,我编写了这个小模块,并将其包含在我的规范中。
不幸的是,您不能使用double
或allow
在描述块之外使用,因此该模块不起作用。
我怎样才能完成类似的事情?
ruby-on-rails - 如何限制用户查看他们无权访问的页面?
我正在学习一门让我创建基本维基的课程。我绝对是新手。我需要限制用户简单地输入他们想直接在 URL 中查看的 wiki id(例如:wikis/5)。唯一能够查看 wiki 的人应该是该 wiki 的所有者、管理员或协作者。
我已经成功地限制了索引视图,以便登录用户只能看到他们自己的 wiki、公共 wiki 或他们合作的 wiki。
我试图在我的 WikiPolicy 中实现类似的代码,但它不起作用,我似乎找不到解决方案。如果用户登录,我现在的代码将显示 wiki。我知道我的逻辑是好的,因为我可以将 params[:id] 的值替换为“5”,它可以按预期工作。
这是我在 wiki_policy.rb 中使用的代码,用于返回一组特定用户有权查看的 wiki。我相信这是可行的,因为它正在查看所有 wiki,而不是依赖于用户试图查看的特定 wiki。