Sha256: fb8e4060057e05fad9566c2d9accc48ebb0f13fb0d3b834d1e91f10f05501674

Contents?: true

Size: 1.32 KB

Versions: 12

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module Hyrax
  ##
  # Sets ACLs from a visibility string
  #
  # @example
  #   resource = Hyrax::Resource.new
  #   writer   = Hyrax::VisibilityWriter.new(resource: resource)
  #   resource.read_groups # => []
  #
  #   writer.assign_access_for(visibility: 'open')
  #   resource.read_groups # => ["public"]
  #
  #   writer.assign_access_for(visibility: 'authenticated')
  #   resource.read_groups # => ["registered"]
  #
  class VisibilityWriter
    ##
    # @!attribute [r] permission_manager
    #   @return [Hyrax::PermissionManager]
    # @!attribute [rw] resource
    #   @return [Valkyrie::Resource]
    attr_accessor :resource
    attr_reader   :permission_manager

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

    ##
    # @param visibility [String]
    #
    # @return [void]
    def assign_access_for(visibility:)
      permission_manager.read_groups =
        permission_manager.read_groups.to_a - visibility_map.deletions_for(visibility: visibility)

      permission_manager.read_groups =
        permission_manager.read_groups.to_a + visibility_map.additions_for(visibility: visibility)
    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_writer.rb
hyrax-5.0.4 app/services/hyrax/visibility_writer.rb
hyrax-5.0.3 app/services/hyrax/visibility_writer.rb
hyrax-5.0.2 app/services/hyrax/visibility_writer.rb
hyrax-5.0.1 app/services/hyrax/visibility_writer.rb
hyrax-5.0.0 app/services/hyrax/visibility_writer.rb
hyrax-5.0.0.rc3 app/services/hyrax/visibility_writer.rb
hyrax-5.0.0.rc2 app/services/hyrax/visibility_writer.rb
hyrax-5.0.0.rc1 app/services/hyrax/visibility_writer.rb
hyrax-4.0.0 app/services/hyrax/visibility_writer.rb
hyrax-4.0.0.rc3 app/services/hyrax/visibility_writer.rb
hyrax-4.0.0.rc2 app/services/hyrax/visibility_writer.rb