问题标签 [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 - Rails:我分别在控制器/视图/请求/功能测试中测试什么?
所以我rails g scaffold bar content:string
在 Rails 中,它会生成很多东西。作为测试的新手,我对每个类别的内容一无所知。
首先是一些上下文:
- 测试框架是RSpec
- 我正在使用设计进行身份验证和权威人士进行授权
- bar资源只允许经过身份验证的用户访问
- 每个用户只被授权 CRUD 他自己的酒吧资源
现在的问题(我知道这很多,对不起!):
- 如果我已经对我的权威策略进行了单元测试,我是否需要在我的控制器规范中测试授权?
- 我是否在控制器规格中测试身份验证?还是我应该把它留给要求规格?
- 是否需要分离视图测试?我不止一次被告知没有必要,我应该只使用功能规格。
- 关于请求规范,我是否需要测试所有 3 个场景,即未认证、已认证但未授权、每个操作已授权?
- 功能测试的范围是什么?我是否测试主要功能或每个角落案例?
ruby - 为什么权威人士在控制器测试中找不到策略?
控制器:
政策:
考试:
Pundit::NotAuthorizedError (not allowed to index? this User)
该应用程序按预期失败。但是测试说:
我做错了吗?我可以让它找到政策吗?
UPD它必须与rails
'自动加载有关。在应用程序的情况下调用constantize
on'UserPolicy'
使其自动加载app/policies/user_policy.rb
,而在测试的情况下则不会。
UPD据说问题在于spring
. 停止它后,测试现在输出:
ruby-on-rails - 我可以使用 Pundit 在 params 中授权我的令牌吗?
我们有一个模型可以获取自己的访问令牌,例如在共享 google doc 或 Dropbox 文件夹时。
我们可以将 params[:token] 与 Pundit 的授权方法一起使用吗?将那部分放在控制器中而不是策略中有点奇怪。
ruby-on-rails - HABTM 轨道关系中的权威范围
我当前的索引操作如下所示:
但我想这样做:
我在和之间有has_and_belongs_to
关系。User
Proposal
我开始Pundit
在我的应用程序中使用 gem,但我不知道如何定义范围以便为普通用户提供上面显示的行为。
我想做这样的事情:
如何获得user.proposals
使用范围变量?我知道,如果我有一个has_many
andbelongs_to
关系,我可以做类似的事情:
但是对于HABTM,我不知道该怎么做。
有什么帮助吗?
ruby-on-rails - activeadmin 自定义页面上的权威人士授权
在带有 activeadmin gem(当前主分支)的 Rails 4 应用程序中,我使用 Pundit 进行授权。它适用于资源,但我无法使其适用于页面。
举个例子:
我将如何为特定用户授权它?
通过阅读 Pundit 自述文件,我尝试使用以下代码,但它不起作用
任何想法 ?
ruby-on-rails-4 - 如何使用 Pundit 允许的属性自动删除 Active Admin 表单输入?
我有一个 Rails 4 应用程序,它使用 Active Admin 1.0.0.pre1 和 pundit 0.3.0 进行授权,到目前为止它工作得很好,但是我很难找到一种基于用户角色自动自定义表单的好方法。
鉴于这些模型:
我希望role
输入自动从表单中删除。
一种选择是:
但是,这种方法要求开发人员记住应该检查哪些属性,似乎容易健忘并且不完全干燥。也许,我正在以错误的方式解决这个问题?欢迎所有建议。
ruby-on-rails - 设计和专家 - 如何限制访问以设计原始视图/操作
我正在使用 Rails(4.2.1)、Devise(3.4.1) 和 Pundit(1.0.0),并希望通过我的用户角色(rolify,4.0.0)限制对设计视图(例如 /users/edit)的访问)。
应该如何命名我的策略或如何指定所指的模型?匹配设计的
我尝试使用文档中的脚本复制设计控制器,但无法使其工作。
我应该怎么做才能完成这项工作,找不到任何可以简单地解释如何做到这一点的东西。只是为了确保我正在尝试使用设计默认视图
ruby-on-rails - 权威集成无法编写未知属性“角色”
这真让我抓狂。我正在尝试使用 devise 设置权威,并且一切正常,直到我尝试设置默认角色。就我而言,默认角色是用户。当我尝试登录时,出现以下错误:
设计中的 ArgumentError::SessionsController#new
app/models/user.rb:26:in `set_default_role'
这是我的user.rb:
这是我的rold.rb:
有任何想法吗?
ruby-on-rails - Pundit 范围继承
我需要权威人士中的范围继承之类的东西。想象一下这个场景:
现在,任何继承自的策略ApplicationPolicy
都有一个范围,我可以通过policy_scope
. 这很好,因为我很少有模型belongs_to :company
具有完全相同的范围规则。
但是,如果我需要另一个策略的另一个范围怎么办?行:
请注意,此类中的唯一区别在于Scope
方法resolve
。
如何在不复制粘贴此样板代码的情况下重用其他策略中的相同Scope
类?ApplicationPolicy
ruby-on-rails - 权威人士范围界定,如何让会员只看到他们的帖子?
我正在为我的学校作业做授权,这是一个 Reddit 克隆。我刚刚被介绍给 Pundit Gem 以对用户角色进行授权,即管理员、版主、会员和访客。
我必须这样做:
管理员和版主应该看到所有帖子,成员应该只能看到他们自己的帖子,客人应该看不到任何帖子。
以普通用户身份登录,您应该只会看到您创建的帖子。
application_policy.rb
这是我正在做的事情:
这将检查用户是否存在,以及用户是版主还是管理员,并且只授予他们查看帖子的权限。就像说明状态一样工作。
post_policy.rb
现在,如果我回头查看我的application_policy.rb,我可以在这里看到这一行,“检查用户是否登录、所有者或管理员”:
如果我尝试将此添加到我的索引授权中?我会继续得到一个
“PostsController#index 中的 NoMethodError”
谢谢你。