Sha256: 1ef4628498ff9bad4a701c7f7dd5667fea82765f38f5cab4da45b9bda0aaf9a7

Contents?: true

Size: 1.79 KB

Versions: 10

Compression:

Stored size: 1.79 KB

Contents

module Sufia
  module GenericFile
    module Permissions
      extend ActiveSupport::Concern
      #we're overriding the permissions= method which is in RightsMetadata
      include Hydra::ModelMixins::RightsMetadata
      include Sufia::GenericFile::Visibility

      included do
        has_metadata :name => "rightsMetadata", :type => ParanoidRightsDatastream
        validate :paranoid_permissions
      end

      def paranoid_permissions
        # let the rightsMetadata ds make this determination
        # - the object instance is passed in for easier access to the props ds
        rightsMetadata.validate(self)
      end

      ## Updates those permissions that are provided to it. Does not replace any permissions unless they are provided
      def permissions=(params)
        perm_hash = permission_hash
        params[:new_user_name].each { |name, access| perm_hash['person'][name] = access } if params[:new_user_name].present?
        params[:new_group_name].each { |name, access| perm_hash['group'][name] = access } if params[:new_group_name].present?

        params[:user].each { |name, access| perm_hash['person'][name] = access} if params[:user]
        params[:group].each { |name, access| perm_hash['group'][name] = access if ['read', 'edit'].include?(access)} if params[:group]

        rightsMetadata.update_permissions(perm_hash)
      end

      private

      def permission_hash
        old_perms = self.permissions
        user_perms =  {}
        old_perms.select{|r| r[:type] == 'user'}.each do |r|
          user_perms[r[:name]] = r[:access]
        end
        user_perms
        group_perms =  {}
        old_perms.select{|r| r[:type] == 'group'}.each do |r|
          group_perms[r[:name]] = r[:access]
        end
        {'person'=>user_perms, 'group'=>group_perms}
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
sufia-3.3.1 sufia-models/lib/sufia/models/generic_file/permissions.rb
sufia-models-3.3.1 lib/sufia/models/generic_file/permissions.rb
sufia-3.3.0 sufia-models/lib/sufia/models/generic_file/permissions.rb
sufia-models-3.3.0 lib/sufia/models/generic_file/permissions.rb
sufia-3.2.1 sufia-models/lib/sufia/models/generic_file/permissions.rb
sufia-models-3.2.1 lib/sufia/models/generic_file/permissions.rb
sufia-3.1.3 sufia-models/lib/sufia/models/generic_file/permissions.rb
sufia-models-3.1.3 lib/sufia/models/generic_file/permissions.rb
sufia-3.1.2 sufia-models/lib/sufia/models/generic_file/permissions.rb
sufia-models-3.1.2 lib/sufia/models/generic_file/permissions.rb