Sha256: 59c8105e91681e502937b09973919cd72356d4b8bf6060d9acf1486be39589bd

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 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 [rw] resource
    #   @return [Valkyrie::Resource::AccessControls]
    attr_accessor :resource

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

    ##
    # @param visibility [String]
    #
    # @return [void]
    def assign_access_for(visibility:)
      resource.read_groups -= visibility_map.deletions_for(visibility: visibility)
      resource.read_groups += visibility_map.additions_for(visibility: visibility)
    end

    def visibility_map
      Hyrax::VisibilityMap.instance
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hyrax-3.0.0.pre.rc1 app/services/hyrax/visibility_writer.rb
hyrax-3.0.0.pre.beta3 app/services/hyrax/visibility_writer.rb