问题标签 [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.
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
想象一下,我想访问一些链接/资产。
我如何以干燥的方式做到这一点?
ruby-on-rails - 如果用户模型定义了资源,则 Rolify with_all_roles 不起作用
我想从用户模型中获取一个说版主的列表,它在这种情况下有效
但是如果我像这样将资源分配给用户模型,它不会列出具有角色主持人的用户
更新
post.rb
用户.rb
ruby-on-rails - 一项 rspec 角色测试失败,但几乎相同的测试成功
我刚刚添加了Rolify gem,并且正在运行一些 rspec 测试。
2个测试如下:
测试结果是:
工厂.rb
第一个测试如何以 nil 对象失败,但第二个测试通过?
编辑
进一步检查后,任何测试should be_true
通过,任何测试should be_false
失败,无论添加的角色是否与检查的角色匹配。
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
时,例如...
...然后测试成功。
问题
- 为什么任何用户(包括来宾用户)都可以读取“拒绝访问”场,但它没有返回?
- 是否
get "#{url}.json"
真的考虑了用户的状态?这一切都是由load_and_authorize_resource
in 完成的FarmsController
吗? - wiki 提到可以
@farms = Farm.accessible_by(current_ability, :read)
省略,因为“这是由索引操作自动完成的load_resource
”。这适用于我的情况吗?
实验
我创建了另一个用户“user2”和另一个农场“我的小农场”。我把它们联系起来了。这样,示例中的数据库总共包含三个农场:
- 与 user1 关联的场“Testfarm”
- 场“拒绝访问”与无用户关联
- 与 user2 关联的农场“我的小农场”。
当我跑步时,Farm.accessible_by(Ability.new(user1), :read)
我仍然只收到“Testfarm”。
ruby-on-rails - 在用户和位置创建上分配管理员
我有一个用于用户注册的嵌套模型表单,它同时创建一个用户和一个位置。我希望自动为创建位置的用户分配管理员角色。我正在使用设计/cancan/rolify。关于如何做到这一点的任何想法?
能力模型
位置模型
用户模型
好榜样
最后,注册表格
ruby-on-rails - 向 Rails Composer、Devise、CanCan、Twitter Bootstrap 添加角色
我正在制作一个从Rails Composer、Devise、CanCan、Twitter Bootstrap 开始的应用程序。
我知道如何使用能力模型设置用户权限。如何添加更多角色以赋予某些权限?
ruby-on-rails - Devise / Rolify / CanCan 2.0:防止用户更改用户角色
我使用 Devise 进行身份验证,使用 Rolify 进行角色管理,使用 CanCan 2.0 进行授权。
我试图允许 :admin 角色更改用户的角色,但不允许所有其他用户访问。
这是我尝试过但不起作用的方法:
我故意在我的用户表单中留下了关联:
控制器
和模型:
现在,如果具有 :moderator 角色的用户尝试更改其他用户(或他自己)的角色,则会发生以下情况:
- 抛出 CanCan::Unauthorized 异常并将用户重定向到 root_url
- 为用户更改角色
我很困惑。如果发生异常,为什么还要进行更改?我可能做错了什么:)
我已经尝试根据 users_controller.rb 中的用户角色操作查询参数如果我在 def 更新后立即放置日志语句,这是我的输出:
我一定是忽略了什么...
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
ruby-on-rails - 如何限制角色看不到产品的价格?
我有一个Product
模型,如果用户以guest
角色身份登录或未登录,我不希望他们能够在我的应用程序中看到产品的价格。
我正在使用 Devise、CanCan 和 Rolify。
我试过这个,在我的ability.rb
:
但这似乎不起作用。我没有在我的视图中添加任何代码 - 我需要这样做吗,还是这个ability
类根本不显示价格?