【问题标题】:How to allow Admin user to access customer user objects rails如何允许管理员用户访问客户用户对象 rails
【发布时间】:2015-07-23 04:06:58
【问题描述】:

我有一个属于客户(用户类型)的报表对象。我进行了设置,以便客户能够授予或删除管理员查看客户报告的权限。我需要知道我需要采取哪些步骤或方向才能让管理员用户查看报告。管理员用户应该只能查看报告(显示)并查看他们有权访问的报告索引。

我在想也许我应该创建一个新控制器,但我不确定这是否正确,或者如何将另一个控制器绑定到已经有控制器的对象。

【问题讨论】:

    标签: ruby-on-rails devise mongoid


    【解决方案1】:

    我强烈建议研究 CanCanCan gem(CanCan gem 的延续,不再受支持)。通过这种方式,您的代码最终看起来像这样(您没有发布任何代码,所以我必须对您的变量等做出假设):

    <% if current_user.admin? %>
        <% if can? :view_report, @customer %>
          <!-- Render the report to this admin -->
          <!--  .............................  -->
        <% end %>
    <% end %>
    

    然后你会在你的控制器中有这样的东西来授予管理员查看用户报告的权限:

    def handle_report
      can [:show], Report, :user_id => user.id
      if current_user.admin?
        can :manage, :current_report
      end
    end
    

    再次为您猜测变量表示歉意。

    【讨论】:

    • 这听起来不错,我会研究一下。这允许例如访问不只是访问我假设的整个类?我会检查这颗宝石,如果它看起来符合要求,我会接受你的回答。
    • 我想我会使用 pundit 而不是 cancancan。人口普查似乎有利于rails 4的权威人士,这就是我正在使用的。不过感谢您为我指明了正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 2020-11-13
    • 2021-04-27
    • 2014-07-16
    • 2017-07-28
    相关资源
    最近更新 更多