Sha256: c1ff4f982057c7288c8c3ba073de232ea7d05d9409e79d198db9a94d21761f12

Contents?: true

Size: 877 Bytes

Versions: 1

Compression:

Stored size: 877 Bytes

Contents

ActiveFedora::QueryMethods.module_eval do
  extend ActiveSupport::Concern

  def accessible_by(ability, action = :index)
    permission_types = case action
      when :index then [:discover, :read, :edit]
      when :show, :read then [:read, :edit]
      when :update, :edit, :create, :new, :destroy then [:edit]
    end

    filters = gated_discovery_filters(permission_types, ability).join(" OR ")
    spawn.where!(filters)
  end

  private

    def gated_discovery_filters(types, ability)
      search_builder = Hydra::AccessControls::SearchBuilder.new(self,
                                                                ability: ability,
                                                                permission_types: types)
      search_builder.send(:gated_discovery_filters)
    end
end

ActiveFedora::Querying.module_eval do
  delegate :accessible_by, :to=>:all
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hydra-access-controls-11.0.0.rc1 lib/active_fedora/accessible_by.rb