【问题标题】:Using query rewriting feature of declarative authorisation with sorcery使用魔法的声明式授权的查询重写功能
【发布时间】:2013-11-21 17:48:48
【问题描述】:

我正在尝试在模型级别使用声明式授权,使用查询重写功能来过滤 html 选择选项,如下所示:

型号:

class TreatmentClinic < ActiveRecord::Base

    def self.filtered_by_user_context
        with_permissions_to(:read)
    end
end

查看(新操作):

<%= form_for(@something) do |f| %>

      <%= f.select :id, TreatmentClinic.filtered_by_user_context.collect {|t| [ t.name, t.id ] }, {:include_blank => 'Please select'} %>

      <%= f.submit %>

<% end %>

authorization_roles.rb:

role :some_role do
    has_permission_on :treatment_clinics do
        to :read
        if_attribute :id => '1'
    end
end

我正在使用巫术,并且在声明性授权下可以很好地工作;声明式授权权限在控制器和视图级别工作正常,但上面的选择抛出此错误:

 No matching rules found for [:read] for #<Authorization::AnonymousUser:0x007fd257c00090 @role_symbols=[:guest]> (roles [:guest], privileges [:read, :manage], context :treatment_clinics).

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails-3 declarative-authorization sorcery


    【解决方案1】:

    以防它在未来对任何人有所帮助,我找到了答案。为了让声明式授权安全在模型级别起作用,我们需要将其添加到 application_controller。

      before_filter :set_current_user
      protected
      def set_current_user
        Authorization.current_user = current_user
      end
    

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2014-07-05
      • 2012-11-07
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多