app/models/concerns/curation_concerns/permissions/writable.rb in curation_concerns-models-0.1.0 vs app/models/concerns/curation_concerns/permissions/writable.rb in curation_concerns-models-0.2.0
- old
+ new
@@ -1,75 +1,34 @@
module CurationConcerns
module Permissions
module Writable
extend ActiveSupport::Concern
- #we're overriding the permissions= method which is in Hydra::AccessControls::Permissions
+ # 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
end
def paranoid_permissions
valid = true
paranoid_edit_permissions.each do |validation|
- if validation[:condition].call(self)
- errors[validation[:key]] ||= []
- errors[validation[:key]] << validation[:message]
- valid = false
- end
+ next unless validation[:condition].call(self)
+ errors[validation[:key]] ||= []
+ errors[validation[:key]] << validation[:message]
+ valid = false
end
- return valid
+ valid
end
def paranoid_edit_permissions
[
- {key: :edit_users, message: 'Depositor must have edit access', condition: lambda { |obj| !obj.edit_users.include?(obj.depositor) }},
- {key: :edit_groups, message: 'Public cannot have edit access', condition: lambda { |obj| obj.edit_groups.include?('public') }},
- {key: :edit_groups, message: 'Registered cannot have edit access', condition: lambda { |obj| obj.edit_groups.include?('registered') }}
+ { 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
-
- def clear_permissions!
- self.permissions = []
- end
-
- ## Updates those permissions that are provided to it. Does not replace any permissions unless they are provided
- # def permissions=(params)
- # raise "Fixme #{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
-
- # def permissions
- # raise "Fixme "
- # perms = super
- # perms.map {|p| { name: p.name, access: p.access, type:p.type } }
- # 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
\ No newline at end of file
+end