Sha256: 0da14d1e991f896b25f4fcac13a156b67b88f661394dffcf92d707a59b8d2825

Contents?: true

Size: 1.07 KB

Versions: 58

Compression:

Stored size: 1.07 KB

Contents

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?('public') } },
            { key: :edit_groups, message: 'Registered cannot have edit access', condition: ->(obj) { obj.edit_groups.include?('registered') } }
          ]
      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

58 entries across 58 versions & 2 rubygems

Version Path
hyrax-2.9.6 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.9.5 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.9.4 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.9.3 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.9.2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.9.1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.9.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.8.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.7.2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.7.1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.7.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.6.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.0.0.pre.rc1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.0.0.pre.beta3 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.5.1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.5.0 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.0.0.pre.beta2 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.4.1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-3.0.0.pre.beta1 app/models/concerns/hyrax/permissions/writable.rb
hyrax-2.4.0 app/models/concerns/hyrax/permissions/writable.rb