Sha256: bae7abc4ba420dc3dc86e354391f27be6657d2c0dce7bf4132143aa3037ca9a8

Contents?: true

Size: 1.42 KB

Versions: 5

Compression:

Stored size: 1.42 KB

Contents

module Hydra::AccessControlsEnforcement
  extend ActiveSupport::Concern
  include Blacklight::AccessControls::Enforcement

  def current_ability
    @current_ability || (scope.current_ability if scope&.respond_to?(:current_ability))
  end

  def with_ability(ability)
    params_will_change!
    @current_ability = ability
    self
  end

  def with_discovery_permissions(permissions)
    params_will_change!
    @discovery_permissions = Array(permissions)
    self
  end

  protected

  def under_embargo?
    load_permissions_from_solr
    embargo_key = Hydra.config.permissions.embargo.release_date
    if @permissions_solr_document[embargo_key]
      embargo_date = Date.parse(@permissions_solr_document[embargo_key].split(/T/)[0])
      return embargo_date > Date.parse(Time.now.to_s)
    end
    false
  end

  # Which permission levels (logical OR) will grant you the ability to discover documents in a search.
  # Overrides blacklight-access_controls method.
  def discovery_permissions
    @discovery_permissions ||= ["edit","discover","read"]
  end

  # Find the name of the solr field for this type of permission.
  # e.g. "read_access_group_ssim" or "discover_access_person_ssim".
  # Used by blacklight-access_controls.
  def solr_field_for(permission_type, permission_category)
    permissions = Hydra.config.permissions[permission_type.to_sym]
    permission_category == 'group' ? permissions.group : permissions.individual
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
hydra-access-controls-13.0.0 lib/hydra/access_controls_enforcement.rb
hydra-access-controls-12.1.0 lib/hydra/access_controls_enforcement.rb
hydra-access-controls-12.0.2 lib/hydra/access_controls_enforcement.rb
hydra-access-controls-12.0.1 lib/hydra/access_controls_enforcement.rb
hydra-access-controls-12.0.0 lib/hydra/access_controls_enforcement.rb