hydra-access-controls 6.0.0.pre3 → 6.0.0.pre4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/hydra-access-controls.rb +2 -3
- data/lib/hydra/ability.rb +2 -9
- data/lib/hydra/access_controls_enforcement.rb +8 -162
- data/lib/hydra/permissions_query.rb +45 -0
- data/lib/hydra/permissions_solr_document.rb +19 -0
- data/lib/hydra/policy_aware_ability.rb +1 -3
- data/spec/unit/access_controls_enforcement_spec.rb +6 -22
- data/spec/unit/policy_aware_ability_spec.rb +1 -1
- metadata +21 -19
@@ -1,7 +1,4 @@
|
|
1
1
|
require 'active_support'
|
2
|
-
# TODO would it be possible to put the require fedora in an after_initialize block like this?
|
3
|
-
#ActiveSupport.on_load(:after_initialize) do
|
4
|
-
# This would allow solrizer to load it's config files after the rails logger is up.
|
5
2
|
require 'active-fedora'
|
6
3
|
require 'cancan'
|
7
4
|
require 'rails'
|
@@ -17,6 +14,8 @@ module Hydra
|
|
17
14
|
autoload :PolicyAwareAbility
|
18
15
|
autoload :AdminPolicy
|
19
16
|
autoload :RoleMapperBehavior
|
17
|
+
autoload :PermissionsQuery
|
18
|
+
autoload :PermissionsSolrDocument
|
20
19
|
class Engine < Rails::Engine
|
21
20
|
end
|
22
21
|
|
data/lib/hydra/ability.rb
CHANGED
@@ -9,7 +9,7 @@ module Hydra::Ability
|
|
9
9
|
|
10
10
|
included do
|
11
11
|
include CanCan::Ability
|
12
|
-
include Hydra::
|
12
|
+
include Hydra::PermissionsQuery
|
13
13
|
include Blacklight::SolrHelper
|
14
14
|
class_attribute :ability_logic
|
15
15
|
self.ability_logic = [:create_permissions, :edit_permissions, :read_permissions, :custom_permissions]
|
@@ -92,13 +92,6 @@ module Hydra::Ability
|
|
92
92
|
|
93
93
|
protected
|
94
94
|
|
95
|
-
def permissions_doc(pid)
|
96
|
-
return @permissions_solr_document if @permissions_solr_document
|
97
|
-
response, @permissions_solr_document = get_permissions_solr_response_for_doc_id(pid)
|
98
|
-
@permissions_solr_document
|
99
|
-
end
|
100
|
-
|
101
|
-
|
102
95
|
def test_edit(pid)
|
103
96
|
permissions_doc(pid)
|
104
97
|
logger.debug("[CANCAN] Checking edit permissions for user: #{current_user.user_key} with groups: #{user_groups.inspect}")
|
@@ -116,7 +109,7 @@ module Hydra::Ability
|
|
116
109
|
logger.debug("[CANCAN] decision: #{result}")
|
117
110
|
result
|
118
111
|
end
|
119
|
-
|
112
|
+
|
120
113
|
def edit_groups
|
121
114
|
edit_group_field = Hydra.config[:permissions][:edit][:group]
|
122
115
|
eg = ((@permissions_solr_document == nil || @permissions_solr_document.fetch(edit_group_field,nil) == nil) ? [] : @permissions_solr_document.fetch(edit_group_field,nil))
|
@@ -1,11 +1,10 @@
|
|
1
1
|
module Hydra::AccessControlsEnforcement
|
2
2
|
extend ActiveSupport::Concern
|
3
|
-
extend Deprecation
|
4
|
-
self.deprecation_horizon = "hydra-access-controls 6.0"
|
5
3
|
|
6
4
|
included do
|
7
5
|
include Hydra::AccessControlsEvaluation
|
8
6
|
include Blacklight::SolrHelper # for force_to_utf8
|
7
|
+
include Hydra::PermissionsQuery
|
9
8
|
class_attribute :solr_access_filters_logic
|
10
9
|
|
11
10
|
# Set defaults. Each symbol identifies a _method_ that must be in
|
@@ -18,99 +17,9 @@ module Hydra::AccessControlsEnforcement
|
|
18
17
|
|
19
18
|
end
|
20
19
|
|
21
|
-
#
|
22
|
-
# Access Controls Enforcement Filters
|
23
|
-
#
|
24
|
-
|
25
|
-
# Controller "before" filter that delegates enforcement based on the controller action
|
26
|
-
# Action-specific implementations are enforce_index_permissions, enforce_show_permissions, etc.
|
27
|
-
# @param [Hash] opts (optional, not currently used)
|
28
|
-
#
|
29
|
-
# @example
|
30
|
-
# class CatalogController < ApplicationController
|
31
|
-
# before_filter :enforce_access_controls
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# @deprecated HYDRA-886 Blacklight is now using Catalog#update to store pagination info, so we don't want to enforce_edit_permissions on it. Instead just call before_filter :enforce_show_permissions, :only=>:show. Move all Edit/Update/Delete methods into non-catalog backed controllers.
|
35
|
-
def enforce_access_controls(opts={})
|
36
|
-
controller_action = params[:action].to_s
|
37
|
-
delegate_method = "enforce_#{controller_action}_permissions"
|
38
|
-
if self.respond_to?(delegate_method.to_sym, true)
|
39
|
-
self.send(delegate_method.to_sym)
|
40
|
-
else
|
41
|
-
true
|
42
|
-
end
|
43
|
-
end
|
44
|
-
deprecation_deprecate :enforce_access_controls
|
45
|
-
|
46
|
-
|
47
|
-
#
|
48
|
-
# Solr integration
|
49
|
-
#
|
50
|
-
|
51
|
-
# returns a params hash with the permissions info for a single solr document
|
52
|
-
# If the id arg is nil, then the value is fetched from params[:id]
|
53
|
-
# This method is primary called by the get_permissions_solr_response_for_doc_id method.
|
54
|
-
# Modeled on Blacklight::SolrHelper.solr_doc_params
|
55
|
-
# @param [String] id of the documetn to retrieve
|
56
|
-
def permissions_solr_doc_params(id=nil)
|
57
|
-
id ||= params[:id]
|
58
|
-
# just to be consistent with the other solr param methods:
|
59
|
-
{
|
60
|
-
:qt => :permissions,
|
61
|
-
:id => id # this assumes the document request handler will map the 'id' param to the unique key field
|
62
|
-
}
|
63
|
-
end
|
64
|
-
|
65
|
-
# a solr query method
|
66
|
-
# retrieve a solr document, given the doc id
|
67
|
-
# Modeled on Blacklight::SolrHelper.get_permissions_solr_response_for_doc_id
|
68
|
-
# @param [String] id of the documetn to retrieve
|
69
|
-
# @param [Hash] extra_controller_params (optional)
|
70
|
-
def get_permissions_solr_response_for_doc_id(id=nil, extra_controller_params={})
|
71
|
-
raise Blacklight::Exceptions::InvalidSolrID.new("The application is trying to retrieve permissions without specifying an asset id") if id.nil?
|
72
|
-
#solr_response = Blacklight.solr.get permissions_solr_doc_params(id).merge(extra_controller_params)
|
73
|
-
#path = blacklight_config.solr_path
|
74
|
-
solr_opts = permissions_solr_doc_params(id).merge(extra_controller_params)
|
75
|
-
response = Blacklight.solr.get('select', :params=> solr_opts)
|
76
|
-
solr_response = Blacklight::SolrResponse.new(force_to_utf8(response), solr_opts)
|
77
|
-
|
78
|
-
raise Blacklight::Exceptions::InvalidSolrID.new("The solr permissions search handler didn't return anything for id \"#{id}\"") if solr_response.docs.empty?
|
79
|
-
document = SolrDocument.new(solr_response.docs.first, solr_response)
|
80
|
-
[solr_response, document]
|
81
|
-
end
|
82
|
-
|
83
|
-
# Loads permissions info into @permissions_solr_response and @permissions_solr_document
|
84
|
-
def load_permissions_from_solr(id=params[:id], extra_controller_params={})
|
85
|
-
unless !@permissions_solr_document.nil? && !@permissions_solr_response.nil?
|
86
|
-
@permissions_solr_response, @permissions_solr_document = get_permissions_solr_response_for_doc_id(id, extra_controller_params)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
20
|
protected
|
91
21
|
|
92
|
-
|
93
|
-
# this will redirect them to the edit action.
|
94
|
-
# If they do not have sufficient privileges to edit documents, it will silently switch their session to browse mode.
|
95
|
-
# @deprecated this is a vestige of the old workflow, which is being removed from hydra-head
|
96
|
-
def enforce_viewing_context_for_show_requests
|
97
|
-
if params[:viewing_context] == "browse"
|
98
|
-
session[:viewing_context] = params[:viewing_context]
|
99
|
-
elsif session[:viewing_context] == "edit"
|
100
|
-
if can? :edit, params[:id]
|
101
|
-
logger.debug("enforce_viewing_context_for_show_requests redirecting to edit")
|
102
|
-
if params[:files]
|
103
|
-
redirect_to :action=>:edit, :files=>true
|
104
|
-
else
|
105
|
-
redirect_to :action=>:edit
|
106
|
-
end
|
107
|
-
else
|
108
|
-
session[:viewing_context] = "browse"
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
deprecation_deprecate :enforce_viewing_context_for_show_requests
|
113
|
-
|
22
|
+
|
114
23
|
#
|
115
24
|
# Action-specific enforcement
|
116
25
|
#
|
@@ -118,71 +27,18 @@ module Hydra::AccessControlsEnforcement
|
|
118
27
|
# Controller "before" filter for enforcing access controls on show actions
|
119
28
|
# @param [Hash] opts (optional, not currently used)
|
120
29
|
def enforce_show_permissions(opts={})
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
embargo_date = Date.parse(@permissions_solr_document[embargo_key].split(/T/)[0])
|
127
|
-
if embargo_date > Date.parse(Time.now.to_s)
|
128
|
-
unless can?(:edit, params[:id])
|
129
|
-
raise Hydra::AccessDenied.new("This item is under embargo. You do not have sufficient access privileges to read this document.", :edit, params[:id])
|
130
|
-
end
|
131
|
-
end
|
30
|
+
permissions = permissions_doc(params[:id])
|
31
|
+
unless permissions.is_public?
|
32
|
+
#its not 'public'
|
33
|
+
if permissions.under_embargo? && !can?(:edit, permissions)
|
34
|
+
raise Hydra::AccessDenied.new("This item is under embargo. You do not have sufficient access privileges to read this document.", :edit, params[:id])
|
132
35
|
end
|
133
|
-
unless can? :read,
|
36
|
+
unless can? :read, permissions
|
134
37
|
raise Hydra::AccessDenied.new("You do not have sufficient access privileges to read this document, which has been marked private.", :read, params[:id])
|
135
38
|
end
|
136
39
|
end
|
137
40
|
end
|
138
41
|
|
139
|
-
# Controller "before" filter for enforcing access controls on edit actions
|
140
|
-
# @param [Hash] opts (optional, not currently used)
|
141
|
-
def enforce_edit_permissions(opts={})
|
142
|
-
logger.debug("Enforcing edit permissions")
|
143
|
-
load_permissions_from_solr
|
144
|
-
if !can? :edit, params[:id]
|
145
|
-
session[:viewing_context] = "browse"
|
146
|
-
raise Hydra::AccessDenied.new("You do not have sufficient privileges to edit this document. You have been redirected to the read-only view.", :edit, params[:id])
|
147
|
-
else
|
148
|
-
session[:viewing_context] = "edit"
|
149
|
-
end
|
150
|
-
end
|
151
|
-
deprecation_deprecate :enforce_edit_permissions
|
152
|
-
|
153
|
-
## This method is here for you to override
|
154
|
-
def enforce_create_permissions(opts={})
|
155
|
-
logger.debug("Enforcing create permissions")
|
156
|
-
if !can? :create, ActiveFedora::Base.new
|
157
|
-
raise Hydra::AccessDenied.new "You do not have sufficient privileges to create a new document."
|
158
|
-
end
|
159
|
-
end
|
160
|
-
deprecation_deprecate :enforce_create_permissions
|
161
|
-
|
162
|
-
## proxies to enforce_edit_permssions. This method is here for you to override
|
163
|
-
def enforce_update_permissions(opts={})
|
164
|
-
enforce_edit_permissions(opts)
|
165
|
-
end
|
166
|
-
|
167
|
-
## proxies to enforce_edit_permssions. This method is here for you to override
|
168
|
-
def enforce_destroy_permissions(opts={})
|
169
|
-
enforce_edit_permissions(opts)
|
170
|
-
end
|
171
|
-
|
172
|
-
## proxies to enforce_edit_permssions. This method is here for you to override
|
173
|
-
def enforce_new_permissions(opts={})
|
174
|
-
enforce_create_permissions(opts)
|
175
|
-
end
|
176
|
-
|
177
|
-
# Controller "before" filter for enforcing access controls on index actions
|
178
|
-
# Currently does nothing, instead relies on
|
179
|
-
# @param [Hash] opts (optional, not currently used)
|
180
|
-
def enforce_index_permissions(opts={})
|
181
|
-
# Do nothing. Relies on add_access_controls_to_solr_params being in the Controller's solr_search_params_logic
|
182
|
-
return true
|
183
|
-
end
|
184
|
-
|
185
|
-
#
|
186
42
|
# Solr query modifications
|
187
43
|
#
|
188
44
|
|
@@ -261,16 +117,6 @@ module Hydra::AccessControlsEnforcement
|
|
261
117
|
[]
|
262
118
|
end
|
263
119
|
|
264
|
-
# proxy for {enforce_index_permissions}
|
265
|
-
def enforce_search_permissions
|
266
|
-
enforce_index_permissions
|
267
|
-
end
|
268
|
-
|
269
|
-
# proxy for {enforce_show_permissions}
|
270
|
-
def enforce_read_permissions
|
271
|
-
enforce_show_permissions
|
272
|
-
end
|
273
|
-
|
274
120
|
# This filters out objects that you want to exclude from search results. By default it only excludes FileAssets
|
275
121
|
# @param solr_parameters the current solr parameters
|
276
122
|
# @param user_parameters the current user-subitted parameters
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Hydra::PermissionsQuery
|
2
|
+
|
3
|
+
def permissions_doc(pid)
|
4
|
+
@permissions_solr_document ||= get_permissions_solr_response_for_doc_id(pid)
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
# a solr query method
|
11
|
+
# retrieve a solr document, given the doc id
|
12
|
+
# Modeled on Blacklight::SolrHelper.get_permissions_solr_response_for_doc_id
|
13
|
+
# @param [String] id of the documetn to retrieve
|
14
|
+
# @param [Hash] extra_controller_params (optional)
|
15
|
+
def get_permissions_solr_response_for_doc_id(id=nil, extra_controller_params={})
|
16
|
+
raise Blacklight::Exceptions::InvalidSolrID.new("The application is trying to retrieve permissions without specifying an asset id") if id.nil?
|
17
|
+
#solr_response = Blacklight.solr.get permissions_solr_doc_params(id).merge(extra_controller_params)
|
18
|
+
#path = blacklight_config.solr_path
|
19
|
+
solr_opts = permissions_solr_doc_params(id).merge(extra_controller_params)
|
20
|
+
response = Blacklight.solr.get('select', :params=> solr_opts)
|
21
|
+
solr_response = Blacklight::SolrResponse.new(force_to_utf8(response), solr_opts)
|
22
|
+
|
23
|
+
raise Blacklight::Exceptions::InvalidSolrID.new("The solr permissions search handler didn't return anything for id \"#{id}\"") if solr_response.docs.empty?
|
24
|
+
Hydra::PermissionsSolrDocument.new(solr_response.docs.first, solr_response)
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# Solr integration
|
29
|
+
#
|
30
|
+
|
31
|
+
# returns a params hash with the permissions info for a single solr document
|
32
|
+
# If the id arg is nil, then the value is fetched from params[:id]
|
33
|
+
# This method is primary called by the get_permissions_solr_response_for_doc_id method.
|
34
|
+
# Modeled on Blacklight::SolrHelper.solr_doc_params
|
35
|
+
# @param [String] id of the documetn to retrieve
|
36
|
+
def permissions_solr_doc_params(id=nil)
|
37
|
+
id ||= params[:id]
|
38
|
+
# just to be consistent with the other solr param methods:
|
39
|
+
{
|
40
|
+
:qt => :permissions,
|
41
|
+
:id => id # this assumes the document request handler will map the 'id' param to the unique key field
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Hydra::PermissionsSolrDocument < SolrDocument
|
2
|
+
def under_embargo?
|
3
|
+
#permissions = permissions_doc(params[:id])
|
4
|
+
embargo_key = ActiveFedora::SolrService.solr_name("embargo_release_date", Hydra::Datastream::RightsMetadata.date_indexer)
|
5
|
+
if self[embargo_key]
|
6
|
+
embargo_date = Date.parse(self[embargo_key].split(/T/)[0])
|
7
|
+
return embargo_date > Date.parse(Time.now.to_s)
|
8
|
+
end
|
9
|
+
false
|
10
|
+
end
|
11
|
+
|
12
|
+
def is_public?
|
13
|
+
access_key = ActiveFedora::SolrService.solr_name("access", Hydra::Datastream::RightsMetadata.indexer)
|
14
|
+
self[access_key].present? && self[access_key].first.downcase == "public"
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
end
|
19
|
+
|
@@ -40,9 +40,7 @@ module Hydra::PolicyAwareAbility
|
|
40
40
|
# The document is stored in an instance variable, so calling this multiple times will only query solr once.
|
41
41
|
# To force reload, set @policy_permissions_solr_document to nil
|
42
42
|
def policy_permissions_doc(policy_pid)
|
43
|
-
|
44
|
-
response, @policy_permissions_solr_document = get_permissions_solr_response_for_doc_id(policy_pid)
|
45
|
-
@policy_permissions_solr_document
|
43
|
+
@policy_permissions_solr_document ||= get_permissions_solr_response_for_doc_id(policy_pid)
|
46
44
|
end
|
47
45
|
|
48
46
|
# Tests whether the object's governing policy object grants edit access for the current user
|
@@ -67,44 +67,28 @@ describe Hydra::AccessControlsEnforcement do
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
describe "enforce_access_controls" do
|
71
|
-
describe "when the method exists" do
|
72
|
-
it "should call the method" do
|
73
|
-
Deprecation.stub(:warn)
|
74
|
-
subject.params = {:action => :index}
|
75
|
-
subject.enforce_access_controls.should be_true
|
76
|
-
end
|
77
|
-
end
|
78
|
-
describe "when the method doesn't exist" do
|
79
|
-
it "should not call the method, but should return true" do
|
80
|
-
Deprecation.stub(:warn)
|
81
|
-
subject.params = {:action => :facet}
|
82
|
-
subject.enforce_access_controls.should be_true
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
70
|
describe "enforce_show_permissions" do
|
87
71
|
it "should allow a user w/ edit permissions to view an embargoed object" do
|
88
72
|
user = User.new :uid=>'testuser@example.com'
|
89
73
|
RoleMapper.stub(:roles).with(user.user_key).and_return(["archivist"])
|
90
74
|
subject.stub(:current_user).and_return(user)
|
91
|
-
subject.should_receive(:can?).with(:edit, nil).and_return(true)
|
92
75
|
subject.stub(:can?).with(:read, nil).and_return(true)
|
93
|
-
|
76
|
+
stub_doc = Hydra::PermissionsSolrDocument.new({"edit_access_person_tsim"=>["testuser@example.com"], "embargo_release_date_dtsi"=>(Date.parse(Time.now.to_s)+2).to_s})
|
94
77
|
|
95
78
|
subject.params = {}
|
96
|
-
subject.should_receive(:
|
79
|
+
subject.should_receive(:can?).with(:edit, stub_doc).and_return(true)
|
80
|
+
subject.should_receive(:get_permissions_solr_response_for_doc_id).and_return(stub_doc)
|
97
81
|
lambda {subject.send(:enforce_show_permissions, {}) }.should_not raise_error Hydra::AccessDenied
|
98
82
|
end
|
99
83
|
it "should prevent a user w/o edit permissions from viewing an embargoed object" do
|
100
84
|
user = User.new :uid=>'testuser@example.com'
|
101
85
|
RoleMapper.stub(:roles).with(user.user_key).and_return([])
|
102
86
|
subject.stub(:current_user).and_return(user)
|
103
|
-
subject.should_receive(:can?).with(:edit, nil).and_return(false)
|
104
87
|
subject.stub(:can?).with(:read, nil).and_return(true)
|
105
88
|
subject.params = {}
|
106
|
-
|
107
|
-
subject.should_receive(:
|
89
|
+
stub_doc = Hydra::PermissionsSolrDocument.new({"edit_access_person_tsim"=>["testuser@example.com"], "embargo_release_date_dtsi"=>(Date.parse(Time.now.to_s)+2).to_s})
|
90
|
+
subject.should_receive(:can?).with(:edit, stub_doc).and_return(false)
|
91
|
+
subject.should_receive(:get_permissions_solr_response_for_doc_id).and_return(stub_doc)
|
108
92
|
lambda {subject.send(:enforce_show_permissions, {})}.should raise_error Hydra::AccessDenied, "This item is under embargo. You do not have sufficient access privileges to read this document."
|
109
93
|
end
|
110
94
|
end
|
@@ -51,7 +51,7 @@ describe Hydra::PolicyAwareAbility do
|
|
51
51
|
|
52
52
|
describe "policy_permissions_doc" do
|
53
53
|
it "should retrieve the permissions doc for the current object's policy and store for re-use" do
|
54
|
-
subject.should_receive(:get_permissions_solr_response_for_doc_id).with(@policy.pid).once.and_return(
|
54
|
+
subject.should_receive(:get_permissions_solr_response_for_doc_id).with(@policy.pid).once.and_return("mock solr doc")
|
55
55
|
subject.policy_permissions_doc(@policy.pid).should == "mock solr doc"
|
56
56
|
subject.policy_permissions_doc(@policy.pid).should == "mock solr doc"
|
57
57
|
subject.policy_permissions_doc(@policy.pid).should == "mock solr doc"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-access-controls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.
|
4
|
+
version: 6.0.0.pre4
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,14 +11,14 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-01-
|
14
|
+
date: 2013-01-30 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
none: false
|
28
28
|
requirements:
|
29
|
-
- -
|
29
|
+
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: '0'
|
32
32
|
- !ruby/object:Gem::Dependency
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
35
35
|
none: false
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: 6.0.0.pre3
|
40
40
|
type: :runtime
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 6.0.0.pre3
|
48
48
|
- !ruby/object:Gem::Dependency
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
none: false
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
- !ruby/object:Gem::Dependency
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
68
68
|
requirements:
|
69
|
-
- -
|
69
|
+
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0'
|
72
72
|
type: :runtime
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
version_requirements: !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
|
-
- -
|
77
|
+
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
80
|
- !ruby/object:Gem::Dependency
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
|
-
- -
|
85
|
+
- - ">="
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
none: false
|
92
92
|
requirements:
|
93
|
-
- -
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
- !ruby/object:Gem::Dependency
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
|
-
- -
|
109
|
+
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
none: false
|
116
116
|
requirements:
|
117
|
-
- -
|
117
|
+
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
type: :development
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
none: false
|
124
124
|
requirements:
|
125
|
-
- -
|
125
|
+
- - ">="
|
126
126
|
- !ruby/object:Gem::Version
|
127
127
|
version: '0'
|
128
128
|
description: Access controls for project hydra
|
@@ -148,6 +148,8 @@ files:
|
|
148
148
|
- lib/hydra/datastream/inheritable_rights_metadata.rb
|
149
149
|
- lib/hydra/datastream/rights_metadata.rb
|
150
150
|
- lib/hydra/model_mixins/rights_metadata.rb
|
151
|
+
- lib/hydra/permissions_query.rb
|
152
|
+
- lib/hydra/permissions_solr_document.rb
|
151
153
|
- lib/hydra/policy_aware_ability.rb
|
152
154
|
- lib/hydra/policy_aware_access_controls_enforcement.rb
|
153
155
|
- lib/hydra/role_mapper_behavior.rb
|
@@ -180,18 +182,18 @@ require_paths:
|
|
180
182
|
required_ruby_version: !ruby/object:Gem::Requirement
|
181
183
|
none: false
|
182
184
|
requirements:
|
183
|
-
- -
|
185
|
+
- - ">="
|
184
186
|
- !ruby/object:Gem::Version
|
185
187
|
version: 1.9.3
|
186
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
189
|
none: false
|
188
190
|
requirements:
|
189
|
-
- -
|
191
|
+
- - ">"
|
190
192
|
- !ruby/object:Gem::Version
|
191
193
|
version: 1.3.1
|
192
194
|
requirements: []
|
193
195
|
rubyforge_project:
|
194
|
-
rubygems_version: 1.8.
|
196
|
+
rubygems_version: 1.8.25
|
195
197
|
signing_key:
|
196
198
|
specification_version: 3
|
197
199
|
summary: Access controls for project hydra
|