hydra-access-controls 10.7.0 → 11.0.0.rc1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7c79ec6fe837de0f50c227d4645733a374171b2320b2dfe5a164b1df4c6e958
4
- data.tar.gz: 01caa2ad2384cf886227747097eeb48abc631383058454fff6b8d61255577eb0
3
+ metadata.gz: 61225eacc0eb1ffe2facc00ac42aa082567c42835cb4d5b05f69e2fa0ee6fd37
4
+ data.tar.gz: 426e99adcb97802d370833f95112b48be577745fc195ceb4fccfed0c97f6276d
5
5
  SHA512:
6
- metadata.gz: c7ebf08abc586fd649c11375017b593518c22b290eb1f09e9b34fdd1a9f76e6b4614c319dd931780f7582aae53e8a4710d29dff6538c63e32b6582393c10b762
7
- data.tar.gz: ad1e0a0095e83ed18a036f98ee37369ceebe8161917f4a591d011ca7e2e94c6aebd398f4fec23a54607f206ec771f0c4c609222b8451b61b2fb84b7e24e6c5c5
6
+ metadata.gz: a3744e8f64c8b98d2a5a2e1d1a7c8b1f941937f2041f8698e11068cc0d934b3d9f227054ce8feacd185b6ec1e8a9c57835684aa868676210f387cbda503165e8
7
+ data.tar.gz: e5b37637f6fd11f5bc9c1f85ebde7227b93ceb434281437b9a410992ec5abaefb8e648ff945d59c1e8382ea142860d0cfb1f24fffb3bb4e4a20aa4b7952c52fd
@@ -22,7 +22,7 @@ module Hydra
22
22
  end
23
23
 
24
24
  def permission_delegate
25
- (access_control || build_access_control).tap { |d| d.owner = self }
25
+ (access_control || create_access_control).tap { |d| d.owner = self }
26
26
  end
27
27
 
28
28
  def to_solr(solr_doc = {})
@@ -1,6 +1,8 @@
1
- # RoleMapper This is used by AccessControlsEnforcement to get users' Roles (used in access permissions)
2
- # If you are using something like Shibboleth or LDAP to get users' Roles, you should override this Class.
3
- # Your override should include a Module that implements the same behaviors as Hydra::RoleMapperBehavior
1
+ # RoleMapper This is used by AccessControls::SearchBuilder to get users' Roles
2
+ # (used in access permissions) If you are using something like Shibboleth or
3
+ # LDAP to get users' Roles, you should override this Class. Your override
4
+ # should include a Module that implements the same behaviors as
5
+ # Hydra::RoleMapperBehavior
4
6
  class RoleMapper
5
7
  include Hydra::RoleMapperBehavior
6
8
  end
@@ -0,0 +1,97 @@
1
+ module Hydra
2
+ module AccessControls
3
+ # A SearchBuilder that applies filters that are expressed within policies.
4
+ # The permissions on the policy are inherited by the objects goverend by the
5
+ # policy.
6
+ class PolicyAwareSearchBuilder < Hydra::AccessControls::SearchBuilder
7
+ # Extends Blacklight::AccessControls::SearchBuilder.apply_gated_discovery
8
+ # to reflect policy-provided access.
9
+ # Appends the result of policy_clauses into the :fq
10
+ # @param [Hash] solr_parameters the current solr parameters, to be
11
+ # modified herein!
12
+ def apply_gated_discovery(solr_parameters)
13
+ super
14
+ logger.debug("POLICY-aware Solr parameters: #{solr_parameters.inspect}")
15
+ end
16
+
17
+ # @return [String,nil] solr query for finding all objects whose policies
18
+ # grant discover access to current_user
19
+ def policy_clauses
20
+ policy_ids = policies_with_access
21
+ return nil if policy_ids.empty?
22
+ clauses = policy_ids.map do |id|
23
+ ActiveFedora::SolrQueryBuilder
24
+ .construct_query_for_rel(isGovernedBy: id)
25
+ end
26
+ '(' + clauses.join(' OR '.freeze) + ')'
27
+ end
28
+
29
+ # Find all the policies that grant discover/read/edit permissions to this user or any of its groups.
30
+ # Grant access based on user id & group
31
+ def policies_with_access
32
+ #### TODO -- Memoize this and put it in the session?
33
+ user_access_filters = []
34
+ user_access_filters += apply_policy_group_permissions(discovery_permissions)
35
+ user_access_filters += apply_policy_user_permissions(discovery_permissions)
36
+ where = user_access_filters.join(' OR ')
37
+ result = policy_class.search_with_conditions(where,
38
+ fl: 'id',
39
+ rows: policy_class.count)
40
+ logger.debug "get policies: #{result}\n\n"
41
+ result.map { |h| h['id'] }
42
+ end
43
+
44
+ # for groups
45
+ # @param [Array{String,#to_sym}] permission_types symbols (or equivalent) from Hydra.config.permissions.inheritable
46
+ def apply_policy_group_permissions(permission_types = discovery_permissions)
47
+ user_access_filters = []
48
+ current_ability.user_groups.each do |group|
49
+ permission_types.each do |type|
50
+ user_access_filters << escape_filter(Hydra.config.permissions.inheritable[type.to_sym].group, group)
51
+ end
52
+ end
53
+ user_access_filters
54
+ end
55
+
56
+ # for individual user access
57
+ # @param [Array{String,#to_sym}] permission_types
58
+ def apply_policy_user_permissions(permission_types = discovery_permissions)
59
+ user = current_ability.current_user
60
+ return [] unless user && user.user_key.present?
61
+ permission_types.map do |type|
62
+ escape_filter(Hydra.config.permissions.inheritable[type.to_sym].individual, user.user_key)
63
+ end
64
+ end
65
+
66
+ # Override method from blacklight-access_controls
67
+ def discovery_permissions
68
+ @discovery_permissions ||= %w[edit discover read]
69
+ end
70
+
71
+ # Returns the Model used for AdminPolicy objects.
72
+ # You can set this by overriding this method or setting
73
+ # Hydra.config[:permissions][:policy_class]
74
+ # Defults to Hydra::AdminPolicy
75
+ def policy_class
76
+ Hydra.config.permissions.policy_class || Hydra::AdminPolicy
77
+ end
78
+
79
+ private
80
+
81
+ def gated_discovery_filters
82
+ filters = super
83
+ additional_clauses = policy_clauses
84
+ filters << additional_clauses unless additional_clauses.blank?
85
+ filters
86
+ end
87
+
88
+ # Find the name of the solr field for this type of permission.
89
+ # e.g. "read_access_group_ssim" or "discover_access_person_ssim".
90
+ # Used by blacklight-access_controls gem.
91
+ def solr_field_for(permission_type, permission_category)
92
+ permissions = Hydra.config.permissions[permission_type.to_sym]
93
+ permission_category == 'group' ? permissions.group : permissions.individual
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,13 @@
1
+ module Hydra
2
+ module AccessControls
3
+ class SearchBuilder < Blacklight::AccessControls::SearchBuilder
4
+ # Find the name of the solr field for this type of permission.
5
+ # e.g. "read_access_group_ssim" or "discover_access_person_ssim".
6
+ # Used by blacklight-access_controls.
7
+ def solr_field_for(permission_type, permission_category)
8
+ permissions = Hydra.config.permissions[permission_type.to_sym]
9
+ permission_category == 'group' ? permissions.group : permissions.individual
10
+ end
11
+ end
12
+ end
13
+ end
@@ -14,7 +14,7 @@ module Hydra
14
14
  # (assumes that when lease visibility is applied to assets
15
15
  # whose leases have expired, the lease expiration date will be removed from its metadata)
16
16
  def assets_under_embargo
17
- ActiveFedora::Base.where("#{Hydra.config.permissions.embargo.release_date}:[* TO *]")
17
+ ActiveFedora::Base.where("#{Hydra.config.permissions.embargo.release_date}:*")
18
18
  end
19
19
 
20
20
  # Returns all assets that have had embargoes deactivated in the past.
@@ -10,7 +10,7 @@ module Hydra
10
10
  # (assumes that when lease visibility is applied to assets
11
11
  # whose leases have expired, the lease expiration date will be removed from its metadata)
12
12
  def assets_under_lease
13
- ActiveFedora::Base.where("#{Hydra.config.permissions.lease.expiration_date}:[* TO *]")
13
+ ActiveFedora::Base.where("#{Hydra.config.permissions.lease.expiration_date}:*")
14
14
  end
15
15
 
16
16
  # Returns all assets that have had embargoes deactivated in the past.
@@ -20,3 +20,4 @@ module Hydra
20
20
  end
21
21
  end
22
22
  end
23
+
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["hydra-tech@googlegroups.com"]
7
7
  gem.description = %q{Access controls for project hydra}
8
8
  gem.summary = %q{Access controls for project hydra}
9
- gem.homepage = "https://github.com/samvera/hydra-head/tree/master/hydra-access-controls"
9
+ gem.homepage = "http://projecthydra.org"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -19,11 +19,11 @@ Gem::Specification.new do |gem|
19
19
  gem.required_ruby_version = '>= 1.9.3'
20
20
 
21
21
  gem.add_dependency 'activesupport', '>= 4', '< 6'
22
- gem.add_dependency "active-fedora", '>= 10.0.0'
23
- gem.add_dependency "blacklight", '>= 5.16'
24
- gem.add_dependency "blacklight-access_controls", '~> 0.6.0'
22
+ gem.add_dependency "active-fedora", '~> 12.0'
25
23
  gem.add_dependency 'cancancan', '~> 1.8'
26
24
  gem.add_dependency 'deprecation', '~> 1.0'
25
+ gem.add_dependency "blacklight", '>= 5.16'
26
+ gem.add_dependency "blacklight-access_controls", '~> 0.7.0.rc1'
27
27
 
28
28
  gem.add_development_dependency "rake", '~> 10.1'
29
29
  gem.add_development_dependency 'rspec', '~> 3.1'
@@ -1,8 +1,5 @@
1
1
  ActiveFedora::QueryMethods.module_eval do
2
2
  extend ActiveSupport::Concern
3
- included do
4
- include Hydra::AccessControlsEnforcement
5
- end
6
3
 
7
4
  def accessible_by(ability, action = :index)
8
5
  permission_types = case action
@@ -14,6 +11,15 @@ ActiveFedora::QueryMethods.module_eval do
14
11
  filters = gated_discovery_filters(permission_types, ability).join(" OR ")
15
12
  spawn.where!(filters)
16
13
  end
14
+
15
+ private
16
+
17
+ def gated_discovery_filters(types, ability)
18
+ search_builder = Hydra::AccessControls::SearchBuilder.new(self,
19
+ ability: ability,
20
+ permission_types: types)
21
+ search_builder.send(:gated_discovery_filters)
22
+ end
17
23
  end
18
24
 
19
25
  ActiveFedora::Querying.module_eval do
@@ -29,7 +29,12 @@ module Hydra
29
29
  alias :config :configure
30
30
  end
31
31
 
32
- class Engine < Rails::Engine; end
32
+ class Engine < Rails::Engine
33
+ # autoload_paths is only necessary for Rails 3
34
+ config.autoload_paths += %W(
35
+ #{config.root}/app/models/concerns
36
+ )
37
+ end
33
38
 
34
39
  # This error is raised when a user isn't allowed to access a given controller action.
35
40
  # This usually happens within a call to AccessControlsEnforcement#enforce_access_controls but can be
@@ -38,11 +43,3 @@ module Hydra
38
43
  end
39
44
 
40
45
  require 'active_fedora/accessible_by'
41
-
42
- # While we support ActiveFedora 10 and 11, alias ActiveFedora::Indexing and
43
- # ActiveFedora::Indexing::Inserter to Solrizer
44
- require 'active_fedora/version'
45
- if ActiveFedora.version.split('.').first.to_i < 12
46
- ActiveFedora::Indexing::Inserter = Solrizer
47
- ActiveFedora::Indexing::Descriptor = Solrizer::Descriptor
48
- end
@@ -2,6 +2,12 @@ module Hydra::AccessControlsEnforcement
2
2
  extend ActiveSupport::Concern
3
3
  include Blacklight::AccessControls::Enforcement
4
4
 
5
+ included do
6
+ Deprecation.warn(self, 'Hydra::AccessControlsEnforcement is deprecated ' \
7
+ 'and will be removed in version 11. Use ' \
8
+ 'Hydra::AccessControls::SearchBuilder instead.')
9
+ end
10
+
5
11
  protected
6
12
 
7
13
  def under_embargo?
@@ -1,5 +1,11 @@
1
1
  # Repeats access controls evaluation methods, but checks against a governing "Policy" object (or "Collection" object) that provides inherited access controls.
2
2
  module Hydra::PolicyAwareAccessControlsEnforcement
3
+ extend ActiveSupport::Concern
4
+ included do
5
+ Deprecation.warn(self, 'Hydra::PolicyAwareAccessControlsEnforcement is deprecated ' \
6
+ 'and will be removed in version 11. Use ' \
7
+ 'Hydra::AccessControls::PolicyAwareSearchBuilder instead.')
8
+ end
3
9
 
4
10
  # Extends Hydra::AccessControlsEnforcement.apply_gated_discovery to reflect policy-provided access.
5
11
  # Appends the result of policy_clauses into the :fq
data/spec/factories.rb CHANGED
@@ -11,52 +11,52 @@ FactoryBot.define do
11
11
  end
12
12
 
13
13
  factory :archivist, :parent=>:user do |u|
14
- uid { 'archivist1' }
15
- password { 'archivist1' }
14
+ uid 'archivist1'
15
+ password 'archivist1'
16
16
  end
17
17
  factory :registered_user, :parent=>:user do |u|
18
- uid { 'registered_user' }
19
- password { 'registered_user' }
18
+ uid 'registered_user'
19
+ password 'registered_user'
20
20
  end
21
21
  factory :staff, :parent=>:user do |u|
22
- uid { 'staff1' }
23
- password { 'staff1' }
22
+ uid 'staff1'
23
+ password 'staff1'
24
24
  end
25
25
  factory :student, :parent=>:user do |u|
26
- uid { 'student1' }
27
- password { 'student1' }
26
+ uid 'student1'
27
+ password 'student1'
28
28
  end
29
29
  factory :joe_creator, :parent=>:user do |u|
30
- uid { 'joe_creator' }
31
- password { 'joe_creator' }
30
+ uid 'joe_creator'
31
+ password 'joe_creator'
32
32
  end
33
33
  factory :martia_morocco, :parent=>:user do |u|
34
- uid { 'martia_morocco' }
35
- password { 'martia_morocco' }
34
+ uid 'martia_morocco'
35
+ password 'martia_morocco'
36
36
  end
37
37
  factory :ira_instructor, :parent=>:user do |u|
38
- uid { 'ira_instructor' }
39
- password { 'ira_instructor' }
38
+ uid 'ira_instructor'
39
+ password 'ira_instructor'
40
40
  end
41
41
  factory :calvin_collaborator, :parent=>:user do |u|
42
- uid { 'calvin_collaborator' }
43
- password { 'calvin_collaborator' }
42
+ uid 'calvin_collaborator'
43
+ password 'calvin_collaborator'
44
44
  end
45
45
  factory :sara_student, :parent=>:user do |u|
46
- uid { 'sara_student' }
47
- password { 'sara_student' }
46
+ uid 'sara_student'
47
+ password 'sara_student'
48
48
  end
49
49
  factory :louis_librarian, :parent=>:user do |u|
50
- uid { 'louis_librarian' }
51
- password { 'louis_librarian' }
50
+ uid 'louis_librarian'
51
+ password 'louis_librarian'
52
52
  end
53
53
  factory :carol_curator, :parent=>:user do |u|
54
- uid { 'carol_curator' }
55
- password { 'carol_curator' }
54
+ uid 'carol_curator'
55
+ password 'carol_curator'
56
56
  end
57
57
  factory :alice_admin, :parent=>:user do |u|
58
- uid { 'alice_admin' }
59
- password { 'alice_admin' }
58
+ uid 'alice_admin'
59
+ password 'alice_admin'
60
60
  end
61
61
 
62
62
  #
@@ -70,23 +70,23 @@ FactoryBot.define do
70
70
  end
71
71
 
72
72
  factory :default_access_asset, :parent=>:asset do |a|
73
- permissions_attributes { [{ name: "joe_creator", access: "edit", type: "person" }] }
73
+ permissions_attributes [{ name: "joe_creator", access: "edit", type: "person" }]
74
74
  end
75
75
 
76
76
  factory :dept_access_asset, :parent=>:asset do |a|
77
- permissions_attributes { [{ name: "africana-faculty", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }] }
77
+ permissions_attributes [{ name: "africana-faculty", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }]
78
78
  end
79
79
 
80
80
  factory :group_edit_asset, :parent=>:asset do |a|
81
- permissions_attributes { [{ name:"africana-faculty", access: "edit", type: "group" }, {name: "calvin_collaborator", access: "edit", type: "person"}] }
81
+ permissions_attributes [{ name:"africana-faculty", access: "edit", type: "group" }, {name: "calvin_collaborator", access: "edit", type: "person"}]
82
82
  end
83
83
 
84
84
  factory :org_read_access_asset, :parent=>:asset do |a|
85
- permissions_attributes { [{ name: "registered", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }] }
85
+ permissions_attributes [{ name: "registered", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }]
86
86
  end
87
87
 
88
88
  factory :open_access_asset, :parent=>:asset do |a|
89
- permissions_attributes { [{ name: "public", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }] }
89
+ permissions_attributes [{ name: "public", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }]
90
90
  end
91
91
 
92
92
  end
@@ -29,6 +29,7 @@ describe Hydra::EmbargoService do
29
29
 
30
30
  describe "#assets_under_embargo" do
31
31
  it "returns all assets with embargo release date set" do
32
+ result = subject.assets_under_embargo
32
33
  returned_ids = subject.assets_under_embargo.map {|a| a.id}
33
34
  expect(returned_ids).to include work_with_expired_embargo1.id, work_with_expired_embargo2.id, work_with_embargo_in_effect.id
34
35
  expect(returned_ids).to_not include work_without_embargo.id
data/spec/spec_helper.rb CHANGED
@@ -11,22 +11,12 @@ Hydra::Engine.config.autoload_paths.each { |path| $LOAD_PATH.unshift path }
11
11
 
12
12
  require 'byebug' unless ENV['CI']
13
13
 
14
- def coverage_needed?
15
- ENV['COVERAGE'] || ENV['CI']
16
- end
17
-
18
- if RUBY_VERSION =~ /^1.9/ && coverage_needed?
14
+ if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.9/
19
15
  require 'simplecov'
20
- require 'coveralls'
16
+ require 'simplecov-rcov'
21
17
 
22
- SimpleCov.root(File.expand_path('../../../', __FILE__))
23
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
24
- [
25
- SimpleCov::Formatter::HTMLFormatter,
26
- Coveralls::SimpleCov::Formatter
27
- ]
28
- )
29
- SimpleCov.start('rails')
18
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
19
+ SimpleCov.start
30
20
  end
31
21
 
32
22
  # Since we're not doing a Rails Engine test, we have to load these classes manually:
@@ -62,3 +52,4 @@ RSpec.configure do |config|
62
52
  ActiveFedora::Cleaner.clean!
63
53
  end
64
54
  end
55
+
data/spec/support/user.rb CHANGED
@@ -5,7 +5,7 @@ class User
5
5
  attr_accessor :uid
6
6
 
7
7
  def initialize(params={})
8
- self.uid = params.delete(:uid) if params && params[:uid]
8
+ self.uid = params.delete(:uid) if params[:uid]
9
9
  super
10
10
  end
11
11
 
@@ -28,8 +28,9 @@ describe Hydra::AccessControls::Permissions do
28
28
  end
29
29
 
30
30
  describe "building a new permission" do
31
+ before { subject.save! }
32
+
31
33
  it "sets the accessTo association" do
32
- subject.save!
33
34
  perm = subject.permissions.build(name: 'user1', type: 'person', access: 'read')
34
35
  expect(perm.access_to_id).to eq subject.id
35
36
  end
@@ -37,13 +38,9 @@ describe Hydra::AccessControls::Permissions do
37
38
  it "autosaves the permissions" do
38
39
  subject.permissions.build(name: 'user1', type: 'person', access: 'read')
39
40
  subject.save!
41
+ subject.reload
40
42
  foo = Foo.find(subject.id)
41
-
42
- expect(foo.permissions)
43
- .to contain_exactly(have_attributes(access: 'read',
44
- access_to_id: subject.id,
45
- agent_name: 'user1',
46
- type: 'person'))
43
+ expect(foo.permissions.to_a).not_to eq []
47
44
  end
48
45
  end
49
46
 
@@ -6,8 +6,10 @@ describe Hydra::PolicyAwareAccessControlsEnforcement do
6
6
 
7
7
  class PolicyMockSearchBuilder < Blacklight::SearchBuilder
8
8
  include Blacklight::Solr::SearchBuilderBehavior
9
- include Hydra::AccessControlsEnforcement
10
- include Hydra::PolicyAwareAccessControlsEnforcement
9
+ Deprecation.silence(PolicyMockSearchBuilder) do
10
+ include Hydra::AccessControlsEnforcement
11
+ include Hydra::PolicyAwareAccessControlsEnforcement
12
+ end
11
13
  attr_accessor :params
12
14
 
13
15
  def initialize(current_ability)
@@ -134,15 +136,14 @@ describe Hydra::PolicyAwareAccessControlsEnforcement do
134
136
 
135
137
  context "when policies are included" do
136
138
  before { subject.apply_gated_discovery(@solr_parameters) }
137
-
139
+
138
140
  it "builds a query that includes all the policies" do
139
- skip if ActiveFedora.version.split('.').first.to_i < 11
140
141
  (1..11).each do |p|
141
142
  expect(policy_queries).to include(/_query_:\"{!raw f=#{governed_field}}test-policy#{p}\"/)
142
143
  end
143
144
  end
144
145
  end
145
-
146
+
146
147
  context "when policies are not included" do
147
148
  before do
148
149
  allow(subject).to receive(:policy_clauses).and_return(nil)
@@ -6,7 +6,7 @@ namespace "hydra-access" do
6
6
  fcrepo_params = { port: 8986, verbose: true, managed: true,
7
7
  no_jms: true, fcrepo_home_dir: 'fcrepo4-test-data' }
8
8
  SolrWrapper.wrap(solr_params) do |solr|
9
- solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "conf")) do
9
+ solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "config")) do
10
10
  FcrepoWrapper.wrap(fcrepo_params) do
11
11
  Rake::Task['spec'].invoke
12
12
  end
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: 10.7.0
4
+ version: 11.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-08-21 00:00:00.000000000 Z
13
+ date: 2018-01-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -36,72 +36,72 @@ dependencies:
36
36
  name: active-fedora
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 10.0.0
41
+ version: '12.0'
42
42
  type: :runtime
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 10.0.0
48
+ version: '12.0'
49
49
  - !ruby/object:Gem::Dependency
50
- name: blacklight
50
+ name: cancancan
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '5.16'
55
+ version: '1.8'
56
56
  type: :runtime
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '5.16'
62
+ version: '1.8'
63
63
  - !ruby/object:Gem::Dependency
64
- name: blacklight-access_controls
64
+ name: deprecation
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.6.0
69
+ version: '1.0'
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 0.6.0
76
+ version: '1.0'
77
77
  - !ruby/object:Gem::Dependency
78
- name: cancancan
78
+ name: blacklight
79
79
  requirement: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: '1.8'
83
+ version: '5.16'
84
84
  type: :runtime
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - "~>"
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: '1.8'
90
+ version: '5.16'
91
91
  - !ruby/object:Gem::Dependency
92
- name: deprecation
92
+ name: blacklight-access_controls
93
93
  requirement: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '1.0'
97
+ version: 0.7.0.rc1
98
98
  type: :runtime
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '1.0'
104
+ version: 0.7.0.rc1
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: rake
107
107
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +160,8 @@ files:
160
160
  - app/models/hydra/access_controls/permission.rb
161
161
  - app/models/hydra/permissions_solr_document.rb
162
162
  - app/models/role_mapper.rb
163
+ - app/search_builders/hydra/access_controls/policy_aware_search_builder.rb
164
+ - app/search_builders/hydra/access_controls/search_builder.rb
163
165
  - app/services/hydra/embargo_service.rb
164
166
  - app/services/hydra/lease_service.rb
165
167
  - app/validators/hydra/future_date_validator.rb
@@ -211,7 +213,7 @@ files:
211
213
  - spec/unit/with_depositor_spec.rb
212
214
  - spec/validators/future_date_validator_spec.rb
213
215
  - tasks/hydra-access-controls.rake
214
- homepage: https://github.com/samvera/hydra-head/tree/master/hydra-access-controls
216
+ homepage: http://projecthydra.org
215
217
  licenses:
216
218
  - APACHE-2.0
217
219
  metadata: {}
@@ -226,11 +228,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
226
228
  version: 1.9.3
227
229
  required_rubygems_version: !ruby/object:Gem::Requirement
228
230
  requirements:
229
- - - ">="
231
+ - - ">"
230
232
  - !ruby/object:Gem::Version
231
- version: '0'
233
+ version: 1.3.1
232
234
  requirements: []
233
- rubygems_version: 3.0.1
235
+ rubyforge_project:
236
+ rubygems_version: 2.7.1
234
237
  signing_key:
235
238
  specification_version: 4
236
239
  summary: Access controls for project hydra