module Sufia::Permissions::Writable

Public Instance Methods

clear_permissions!() click to toggle source
# File lib/sufia/permissions/writable.rb, line 33
def clear_permissions!
  self.permissions = []
end
paranoid_edit_permissions() click to toggle source
# File lib/sufia/permissions/writable.rb, line 25
def paranoid_edit_permissions
  [
    { key: :edit_users, message: 'Depositor must have edit access', condition: ->(obj) { !obj.edit_users.include?(obj.depositor) } },
    { 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
paranoid_permissions() click to toggle source
# File lib/sufia/permissions/writable.rb, line 14
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

Private Instance Methods

permission_hash() click to toggle source

def permissions

raise "Fixme "
perms = super
perms.map {|p| { name: p.name, access: p.access, type:p.type } }

end

# File lib/sufia/permissions/writable.rb, line 58
def permission_hash
  old_perms = permissions
  user_perms = {}
  old_perms.select { |r| r[:type] == 'user' }.each do |r|
    user_perms[r[:name]] = r[:access]
  end
  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