问题标签 [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 回答
269 浏览

ruby-on-rails - Rails:我分别在控制器/视图/请求/功能测试中测试什么?

所以我rails g scaffold bar content:string在 Rails 中,它会生成很多东西。作为测试的新手,我对每个类别的内容一无所知。

首先是一些上下文:

  • 测试框架是RSpec
  • 我正在使用设计进行身份验证和权威人士进行授权
  • bar资源只允许经过身份验证的用户访问
  • 每个用户只被授权 CRUD 他自己的酒吧资源

现在的问题(我知道这很多,对不起!):

  1. 如果我已经对我的权威策略进行了单元测试,我是否需要在我的控制器规范中测试授权?
  2. 我是否在控制器规格中测试身份验证?还是我应该把它留给要求规格?
  3. 是否需要分离视图测试?我不止一次被告知没有必要,我应该只使用功能规格。
  4. 关于请求规范,我是否需要测试所有 3 个场景,即未认证已认证但未授权每个操作已授权?
  5. 功能测试的范围是什么?我是否测试主要功能或每个角落案例?
0 投票
2 回答
1475 浏览

ruby - 为什么权威人士在控制器测试中找不到策略?

控制器:

政策:

考试:

Pundit::NotAuthorizedError (not allowed to index? this User)该应用程序按预期失败。但是测试说:

我做错了吗?我可以让它找到政策吗?

UPD它必须与rails'自动加载有关。在应用程序的情况下调用constantizeon'UserPolicy'使其自动加载app/policies/user_policy.rb,而在测试的情况下则不会。

UPD据说问题在于spring. 停止它后,测试现在输出:

0 投票
1 回答
300 浏览

ruby-on-rails - 我可以使用 Pundit 在 params 中授权我的令牌吗?

我们有一个模型可以获取自己的访问令牌,例如在共享 google doc 或 Dropbox 文件夹时。

我们可以将 params[:token] 与 Pundit 的授权方法一起使用吗?将那部分放在控制器中而不是策略中有点奇怪。

0 投票
1 回答
315 浏览

ruby-on-rails - HABTM 轨道关系中的权威范围

我当前的索引操作如下所示:

但我想这样做:

我在和之间有has_and_belongs_to关系。UserProposal

我开始Pundit在我的应用程序中使用 gem,但我不知道如何定义范围以便为普通用户提供上面显示的行为。

我想做这样的事情:

如何获得user.proposals使用范围变量?我知道,如果我有一个has_manyandbelongs_to关系,我可以做类似的事情:

但是对于HABTM,我不知道该怎么做。

有什么帮助吗?

0 投票
1 回答
2143 浏览

ruby-on-rails - activeadmin 自定义页面上的权威人士授权

在带有 activeadmin gem(当前主分支)的 Rails 4 应用程序中,我使用 Pundit 进行授权。它适用于资源,但我无法使其适用于页面。

举个例子:

我将如何为特定用户授权它?

通过阅读 Pundit 自述文件,我尝试使用以下代码,但它不起作用

任何想法 ?

0 投票
2 回答
1454 浏览

ruby-on-rails-4 - 如何使用 Pundit 允许的属性自动删除 Active Admin 表单输入?

我有一个 Rails 4 应用程序,它使用 Active Admin 1.0.0.pre1 和 pundit 0.3.0 进行授权,到目前为止它工作得很好,但是我很难找到一种基于用户角色自动自定义表单的好方法。

鉴于这些模型:

我希望role输入自动从表单中删除。

一种选择是:

但是,这种方法要求开发人员记住应该检查哪些属性,似乎容易健忘并且不完全干燥。也许,我正在以错误的方式解决这个问题?欢迎所有建议。

0 投票
1 回答
1211 浏览

ruby-on-rails - 设计和专家 - 如何限制访问以设计原始视图/操作

我正在使用 Rails(4.2.1)、Devise(3.4.1) 和 Pundit(1.0.0),并希望通过我的用户角色(rolify,4.0.0)限制对设计视图(例如 /users/edit)的访问)。

应该如何命名我的策略或如何指定所指的模型?匹配设计的

我尝试使用文档中的脚本复制设计控制器,但无法使其工作。

我应该怎么做才能完成这项工作,找不到任何可以简单地解释如何做到这一点的东西。只是为了确保我正在尝试使用设计默认视图

0 投票
1 回答
384 浏览

ruby-on-rails - 权威集成无法编写未知属性“角色”

这真让我抓狂。我正在尝试使用 devise 设置权威,并且一切正常,直到我尝试设置默认角色。就我而言,默认角色是用户。当我尝试登录时,出现以下错误:

设计中的 ArgumentError::SessionsController#new

app/models/user.rb:26:in `set_default_role'

这是我的user.rb:

这是我的rold.rb:

有任何想法吗?

0 投票
1 回答
652 浏览

ruby-on-rails - Pundit 范围继承

我需要权威人士中的范围继承之类的东西。想象一下这个场景:

现在,任何继承自的策略ApplicationPolicy都有一个范围,我可以通过policy_scope. 这很好,因为我很少有模型belongs_to :company具有完全相同的范围规则。

但是,如果我需要另一个策略的另一个范围怎么办?行:

请注意,此类中的唯一区别在于Scope方法resolve

如何在不复制粘贴此样板代码的情况下重用其他策略中的相同Scope类?ApplicationPolicy

0 投票
1 回答
1285 浏览

ruby-on-rails - 权威人士范围界定,如何让会员只看到他们的帖子?

我正在为我的学校作业做授权,这是一个 Reddit 克隆。我刚刚被介绍给 Pundit Gem 以对用户角色进行授权,即管理员、版主、会员和访客。

我必须这样做:

管理员和版主应该看到所有帖子,成员应该只能看到他们自己的帖子,客人应该看不到任何帖子。

以普通用户身份登录,您应该只会看到您创建的帖子。

application_policy.rb

这是我正在做的事情:

这将检查用户是否存在,以及用户是版主还是管理员,并且只授予他们查看帖子的权限。就像说明状态一样工作。

post_policy.rb

现在,如果我回头查看我的application_policy.rb,我可以在这里看到这一行,“检查用户是否登录、所有者或管理员”:

如果我尝试将此添加到我的索引授权中?我会继续得到一个

“PostsController#index 中的 NoMethodError”

谢谢你。