hydra-access-controls 9.4.0 → 9.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e77408cf3b024c305f4c9e0115e328970dbecce3
4
- data.tar.gz: 7bde23563a7c7553d1714d1f438d8520e5fd82f8
3
+ metadata.gz: 2936e5b807433daa6ecd2c103eb663255afa6815
4
+ data.tar.gz: 0bcbd88134dea8542bf81852bb9ff15d39c35317
5
5
  SHA512:
6
- metadata.gz: 8275440b6eac3fac51c150c5c2e419d83ce40cd30e3e52a569171cf5ea75c55f16da4efa4d3fa73f404503e8697f502163d64b2313cacbfa44ce593757f2fbf1
7
- data.tar.gz: f05ae2c6242af7d39552179a27cd67bab85be0c315538c2a7b1ba31a4ff0e355aa7c2d5d5106411f19f8a5d3a99dd9a9e4a6b60580a976171bb1620218a74f38
6
+ metadata.gz: 9e3a0171c9cb88cbc161b86295a628f2c4d5b0a1f45a22a4322d2c562ed167d49455c6c064ef4d8a9909fdc44df951584c8332d8bf4c09e0276a551a766f32bd
7
+ data.tar.gz: a15532976668837b47d10e1f93511abe7f109486a21a1b832bc1e7117ffd7063c3e2750e4130e02a62df0975e464a15cc371d7d057f97ad4643d47d592a74672
@@ -1,57 +1,65 @@
1
- module Hydra
2
- module AccessControls
3
- module Visibility
4
- extend ActiveSupport::Concern
5
-
6
- def visibility=(value)
7
- return if value.nil?
8
- # only set explicit permissions
9
- case value
10
- when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
11
- public_visibility!
12
- when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
13
- registered_visibility!
14
- when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
15
- private_visibility!
16
- else
17
- raise ArgumentError, "Invalid visibility: #{value.inspect}"
18
- end
1
+ module Hydra::AccessControls
2
+ module Visibility
3
+ extend ActiveSupport::Concern
4
+
5
+ def visibility=(value)
6
+ return if value.nil?
7
+ # only set explicit permissions
8
+ case value
9
+ when AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
10
+ public_visibility!
11
+ when AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
12
+ registered_visibility!
13
+ when AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
14
+ private_visibility!
15
+ else
16
+ raise ArgumentError, "Invalid visibility: #{value.inspect}"
19
17
  end
18
+ end
20
19
 
21
- def visibility
22
- if read_groups.include? Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC
23
- Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
24
- elsif read_groups.include? Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED
25
- Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
26
- else
27
- Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
28
- end
20
+ def visibility
21
+ if read_groups.include? AccessRight::PERMISSION_TEXT_VALUE_PUBLIC
22
+ AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
23
+ elsif read_groups.include? AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED
24
+ AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
25
+ else
26
+ AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
29
27
  end
28
+ end
29
+
30
+ def visibility_changed?
31
+ !!@visibility_will_change
32
+ end
33
+
34
+ private
30
35
 
31
- def visibility_changed?
32
- !!@visibility_will_change
36
+ # Override represented_visibility if you want to add another visibility that is
37
+ # represented as a read group (e.g. on-campus)
38
+ # @return [Array] a list of visibility types that are represented as read groups
39
+ def represented_visibility
40
+ [AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED,
41
+ AccessRight::PERMISSION_TEXT_VALUE_PUBLIC]
33
42
  end
34
43
 
35
- private
36
44
  def visibility_will_change!
37
45
  @visibility_will_change = true
38
46
  end
39
47
 
40
48
  def public_visibility!
41
- visibility_will_change! unless visibility == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
42
- set_read_groups([Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC], [Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED])
49
+ visibility_will_change! unless visibility == AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
50
+ remove_groups = represented_visibility - [AccessRight::PERMISSION_TEXT_VALUE_PUBLIC]
51
+ set_read_groups([AccessRight::PERMISSION_TEXT_VALUE_PUBLIC], remove_groups)
43
52
  end
44
53
 
45
54
  def registered_visibility!
46
- visibility_will_change! unless visibility == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
47
- set_read_groups([Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED], [Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC])
55
+ visibility_will_change! unless visibility == AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
56
+ remove_groups = represented_visibility - [AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED]
57
+ set_read_groups([AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED], remove_groups)
48
58
  end
49
59
 
50
60
  def private_visibility!
51
- visibility_will_change! unless visibility == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
52
- set_read_groups([], [Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED, Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC])
61
+ visibility_will_change! unless visibility == AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
62
+ set_read_groups([], represented_visibility)
53
63
  end
54
-
55
- end
56
64
  end
57
65
  end
@@ -3,7 +3,7 @@ module Hydra
3
3
  extend ActiveSupport::Concern
4
4
  included do
5
5
  # Rights
6
- property :rights, predicate: ::RDF::DC.rights do |index|
6
+ property :rights, predicate: ::RDF::Vocab::DC.rights do |index|
7
7
  index.as :facetable
8
8
  end
9
9
  property :rightsHolder, predicate: ::RDF::URI('http://opaquenamespace.org/rights/rightsHolder') do |index|
@@ -4,10 +4,10 @@ module Hydra
4
4
  include Hydra::AdminPolicyBehavior
5
5
  include Hydra::AccessControls::Permissions
6
6
 
7
- property :title, predicate: ::RDF::DC.title do |index|
7
+ property :title, predicate: ::RDF::Vocab::DC.title do |index|
8
8
  index.as :stored_searchable
9
9
  end
10
- property :description, predicate: ::RDF::DC.description do |index|
10
+ property :description, predicate: ::RDF::Vocab::DC.description do |index|
11
11
  index.as :searchable
12
12
  end
13
13
 
@@ -1,16 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Hydra::AccessControls::Visibility do
4
- module VisibilityOverride
5
- extend ActiveSupport::Concern
6
- include Hydra::AccessControls::Permissions
7
- def visibility; super; end
8
- def visibility=(value); super(value); end
9
- end
10
- class MockParent < ActiveFedora::Base
11
- include VisibilityOverride
12
- end
13
-
14
4
  describe "setting visibility" do
15
5
  before do
16
6
  class Foo < ActiveFedora::Base
@@ -67,14 +57,47 @@ describe Hydra::AccessControls::Visibility do
67
57
  end
68
58
  end
69
59
  end
60
+ end
61
+ end
70
62
 
63
+ describe "overiding visibility" do
64
+ module VisibilityOverride
65
+ extend ActiveSupport::Concern
66
+ include Hydra::AccessControls::Permissions
67
+ def visibility; super; end
68
+ def visibility=(value); super(value); end
69
+ end
70
+ class MockParent < ActiveFedora::Base
71
+ include VisibilityOverride
71
72
  end
72
73
 
74
+ it 'allows for overrides of visibility' do
75
+ expect {
76
+ MockParent.new(visibility: Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
77
+ }.to_not raise_error
78
+ end
73
79
  end
74
80
 
75
- it 'allows for overrides of visibility' do
76
- expect{
77
- MockParent.new(visibility: Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
78
- }.to_not raise_error
81
+ context "when represented_visibility is overridden" do
82
+ let(:model) { MockObject.new }
83
+ before do
84
+ class MockObject < ActiveFedora::Base
85
+ include Hydra::AccessControls::Permissions
86
+ def represented_visibility
87
+ ['one']
88
+ end
89
+ end
90
+
91
+ model.read_groups = ['one', 'another']
92
+ end
93
+
94
+ after do
95
+ Object.send(:remove_const, :MockObject)
96
+ end
97
+
98
+ it "replaces the represented visibility" do
99
+ model.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
100
+ expect(model.read_groups).to contain_exactly 'public', 'another'
101
+ end
79
102
  end
80
103
  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: 9.4.0
4
+ version: 9.4.1
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: 2015-11-02 00:00:00.000000000 Z
13
+ date: 2015-11-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport