Sha256: c0d74588820ec1f228451f18e17f267575edf472d8edc604b78b1f06838af4b8

Contents?: true

Size: 1.42 KB

Versions: 12

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module Hyrax
  ##
  # Translates a set of ACLs into a visibility string.
  #
  # @example
  #   resource = Hyrax::Resource.new
  #   reader   = Hyrax::VisibilityReader.new(resource: resource)
  #   reader.read # => "restricted"
  #
  #   resource.read_groups = ["public"]
  #   reader.read # => "open"
  #
  class VisibilityReader
    ##
    # @!attribute [r] permission_manager
    #   @return [Hyrax::PermissionManager]
    # @!attribute [rw] resource
    #   @return [Valkyrie::Resource]
    attr_reader   :permission_manager
    attr_accessor :resource

    ##
    # @param resource [Valkyrie::Resource::AccessControls]
    def initialize(resource:)
      self.resource = resource
      @permission_manager = resource.permission_manager
    end

    ##
    # @return [String]
    def read
      if permission_manager.read_groups.include? Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC
        visibility_map.visibility_for(group: Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC)
      elsif permission_manager.read_groups.include? Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED
        visibility_map.visibility_for(group: Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED)
      else
        visibility_map.visibility_for(group: :PRIVATE)
      end
    end

    def visibility_map
      Hyrax.config.visibility_map
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
hyrax-5.1.0.pre.beta1 app/services/hyrax/visibility_reader.rb
hyrax-5.0.4 app/services/hyrax/visibility_reader.rb
hyrax-5.0.3 app/services/hyrax/visibility_reader.rb
hyrax-5.0.2 app/services/hyrax/visibility_reader.rb
hyrax-5.0.1 app/services/hyrax/visibility_reader.rb
hyrax-5.0.0 app/services/hyrax/visibility_reader.rb
hyrax-5.0.0.rc3 app/services/hyrax/visibility_reader.rb
hyrax-5.0.0.rc2 app/services/hyrax/visibility_reader.rb
hyrax-5.0.0.rc1 app/services/hyrax/visibility_reader.rb
hyrax-4.0.0 app/services/hyrax/visibility_reader.rb
hyrax-4.0.0.rc3 app/services/hyrax/visibility_reader.rb
hyrax-4.0.0.rc2 app/services/hyrax/visibility_reader.rb