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