Class: Hydra::AdminPolicy

Inherits:
ActiveFedora::Base
  • Object
show all
Includes:
ModelMixins::RightsMetadata
Defined in:
lib/hydra/admin_policy.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ModelMixins::RightsMetadata

#discover_groups, #discover_groups=, #discover_groups_string, #discover_groups_string=, #discover_users, #discover_users=, #discover_users_string, #discover_users_string=, #edit_groups, #edit_groups=, #edit_groups_string, #edit_groups_string=, #edit_users, #edit_users=, #permissions, #permissions=, #read_groups, #read_groups=, #read_groups_string, #read_groups_string=, #read_users, #read_users=, #read_users_string, #read_users_string=, #set_discover_groups, #set_discover_users, #set_edit_groups, #set_edit_users, #set_read_groups, #set_read_users

Class Method Details

.editable_by_user(user) ⇒ Object



26
27
28
# File 'lib/hydra/admin_policy.rb', line 26

def self.editable_by_user(user)
  where_user_has_permissions(user, [:edit])
end

.readable_by_user(user) ⇒ Object



22
23
24
# File 'lib/hydra/admin_policy.rb', line 22

def self.readable_by_user(user)
  where_user_has_permissions(user, [:read, :edit])
end

.where_user_has_permissions(user, permissions = [:edit]) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/hydra/admin_policy.rb', line 30

def self.where_user_has_permissions(user, permissions=[:edit])
  or_query = [] 
  RoleMapper.roles(user).each do |group|
    permissions.each do |permission|
      or_query << "#{permission}_access_group_t:#{group}"
    end
  end
  permissions.each do |permission|
    or_query << "#{permission}_access_person_t:#{user.user_key}"
  end
  find_with_conditions(or_query.join(" OR "))
end

Instance Method Details

#default_permissionsObject

Returns a list with all the permissions on the object.

Examples:

[{:name=>"group1", :access=>"discover", :type=>'group'},
{:name=>"group2", :access=>"discover", :type=>'group'},
{:name=>"user2", :access=>"read", :type=>'user'},
{:name=>"user1", :access=>"edit", :type=>'user'},
{:name=>"user3", :access=>"read", :type=>'user'}]


70
71
72
73
74
# File 'lib/hydra/admin_policy.rb', line 70

def default_permissions
  (defaultRights.groups.map {|x| {:type=>'group', :access=>x[1], :name=>x[0] }} + 
    defaultRights.individuals.map {|x| {:type=>'user', :access=>x[1], :name=>x[0]}})

end

#default_permissions=(params) ⇒ Object

Updates those permissions that are provided to it. Does not replace any permissions unless they are provided

Examples:

obj.default_permissions= [{:name=>"group1", :access=>"discover", :type=>'group'},
{:name=>"group2", :access=>"discover", :type=>'group'}]


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/hydra/admin_policy.rb', line 47

def default_permissions=(params)
  perm_hash = {'person' => defaultRights.individuals, 'group'=> defaultRights.groups}

  params.each do |row|
    if row[:type] == 'user' || row[:type] == 'person'
      perm_hash['person'][row[:name]] = row[:access]        
    elsif row[:type] == 'group'
      perm_hash['group'][row[:name]] = row[:access]
    else
      raise ArgumentError, "Permission type must be 'user', 'person' (alias for 'user'), or 'group'"
    end
  end
  
  defaultRights.update_permissions(perm_hash)
end

#to_solr(solr_doc = {}) ⇒ Object



76
77
78
79
80
# File 'lib/hydra/admin_policy.rb', line 76

def to_solr(solr_doc = {}) 
  super
  solr_doc['title_display'] = solr_doc['title_t'].first if solr_doc['title_t']
  solr_doc
end