Sha256: 923507a4fe6247f9aadd6a7881bcd1bf6886e63c11909ff8618cf2f911890adb

Contents?: true

Size: 1.33 KB

Versions: 17

Compression:

Stored size: 1.33 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::VisibilityMap.instance
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
hyrax-3.6.0 app/services/hyrax/visibility_writer.rb
hyrax-4.0.0.rc1 app/services/hyrax/visibility_writer.rb
hyrax-3.5.0 app/services/hyrax/visibility_writer.rb
hyrax-4.0.0.beta2 app/services/hyrax/visibility_writer.rb
hyrax-3.4.2 app/services/hyrax/visibility_writer.rb
hyrax-4.0.0.beta1 app/services/hyrax/visibility_writer.rb
hyrax-3.4.1 app/services/hyrax/visibility_writer.rb
hyrax-3.4.0 app/services/hyrax/visibility_writer.rb
hyrax-3.3.0 app/services/hyrax/visibility_writer.rb
hyrax-3.2.0 app/services/hyrax/visibility_writer.rb
hyrax-3.1.0 app/services/hyrax/visibility_writer.rb
hyrax-3.0.2 app/services/hyrax/visibility_writer.rb
hyrax-3.0.1 app/services/hyrax/visibility_writer.rb
hyrax-3.0.0 app/services/hyrax/visibility_writer.rb
hyrax-3.0.0.pre.rc4 app/services/hyrax/visibility_writer.rb
hyrax-3.0.0.pre.rc3 app/services/hyrax/visibility_writer.rb
hyrax-3.0.0.pre.rc2 app/services/hyrax/visibility_writer.rb