【问题标题】:How to setup cancan with activeadmin without any side effect?如何在没有任何副作用的情况下使用 activeadmin 设置 cancan?
【发布时间】:2019-01-16 11:15:23
【问题描述】:

我有一个活动的管理代码正在运行,如下所示

ActiveAdmin.register UserProcess, as: 'Summary' do
....
end

active_admin.rb -

config.authorization_adapter = ActiveAdmin::CanCanAdapter
config.cancan_ability_class = "Ability"
config.on_unauthorized_access = :access_denied

我想阻止用户访问此摘要页面,而不实际阻止他从 UserProcess 访问。

添加cannot :manage, UserProcess 适用于该页面,但它也不允许用户访问他的其他页面。

我的命名空间也是:actadmin

请告诉我在Ability类中正确的写法

【问题讨论】:

  • 我会看看 Pundit 而不是康康舞。两者都很棒,但我发现 Pundit 在需要更精细控制的情况下更容易应用。
  • @bkunzi01 - 我现在想和 cacancan 一起去
  • 没问题。如果您将其转发给 Pundit,我可以帮助您。谢谢。

标签: ruby-on-rails ruby authorization activeadmin cancan


【解决方案1】:

我通过创建自定义页面并在该页面上应用 cancan 能力解决了类似的问题。否则,能力被应用于资源。

ActiveAdmin.register_page "Summary" do
 menu parent: "UserProcess", label: "Summary"
  content title: "Summary" do
   .......
   .......
  end
end

并以这种方式应用能力:

class Ability
 include CanCan::Ability
  def initialize(users)
   can :manage UserProcess
   cannot :manage, ActiveAdmin::Page, name: "Summary"
  end
end

如果您当时发现了另一个更清洁的解决方案,请编辑我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 2013-04-02
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多