Sha256: cf6bdcd13707ceb4d3f542ee2d3a823883186b0e8a5303a5fa3447deb52c5d3a

Contents?: true

Size: 1.13 KB

Versions: 26

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true
module Hyrax
  module Permissions
    module Writable
      extend ActiveSupport::Concern

      # we're overriding the permissions= method which is in Hydra::AccessControls::Permissions
      include Hydra::AccessControls::Permissions
      include Hydra::AccessControls::Visibility

      included do
        validate :paranoid_permissions

        class_attribute :paranoid_edit_permissions
        self.paranoid_edit_permissions =
          [
            { key: :edit_groups, message: 'Public cannot have edit access', condition: ->(obj) { obj.edit_groups.include?(::Ability.public_group_name) } },
            { key: :edit_groups, message: 'Registered cannot have edit access', condition: ->(obj) { obj.edit_groups.include?(::Ability.registered_group_name) } }
          ]
      end

      def paranoid_permissions
        valid = true
        paranoid_edit_permissions.each do |validation|
          next unless validation[:condition].call(self)
          errors[validation[:key]] ||= []
          errors[validation[:key]] << validation[:message]
          valid = false
        end
        valid
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
hyrax-5.0.4 app/models/concerns/hyrax/permissions/writable.rb
hyrax-5.0.3 app/models/concerns/hyrax/permissions/writable.rb
hyrax-5.0.1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-5.0.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-5.0.0.rc3 app/models/concerns/hyrax/permissions/writable.rb
hyrax-5.0.0.rc2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-5.0.0.rc1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.6.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-4.0.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-4.0.0.rc3 app/models/concerns/hyrax/permissions/writable.rb
hyrax-4.0.0.rc2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-4.0.0.rc1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.5.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-4.0.0.beta2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.4.2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-4.0.0.beta1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.4.1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.4.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.3.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.2.0 app/models/concerns/hyrax/permissions/writable.rb