hydra-access-controls 5.3.0 → 5.4.0.pre1
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/ability.rb +28 -23
- data/lib/hydra/user.rb +4 -0
- metadata +6 -9
data/lib/hydra/ability.rb
CHANGED
@@ -19,19 +19,24 @@ module Hydra::Ability
|
|
19
19
|
Hydra.config[:user_model] ? Hydra.config[:user_model].constantize : ::User
|
20
20
|
end
|
21
21
|
|
22
|
+
attr_reader :current_user, :session
|
23
|
+
|
22
24
|
def initialize(user, session=nil)
|
23
|
-
@
|
25
|
+
@current_user = user || Hydra::Ability.user_class.new # guest user (not logged in)
|
26
|
+
@user = @current_user # just in case someone was using this in an override. Just don't.
|
24
27
|
@session = session
|
25
28
|
hydra_default_permissions()
|
26
29
|
end
|
27
30
|
|
28
31
|
## You can override this method if you are using a different AuthZ (such as LDAP)
|
29
|
-
def user_groups(
|
30
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to user_groups, use the instance_variables", caller()) if
|
32
|
+
def user_groups(deprecated_user=nil, deprecated_session=nil)
|
33
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to user_groups, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
31
34
|
|
32
35
|
return @user_groups if @user_groups
|
33
|
-
|
34
|
-
@user_groups
|
36
|
+
|
37
|
+
@user_groups = default_user_groups
|
38
|
+
@user_groups |= current_user.groups if current_user and current_user.respond_to? :groups
|
39
|
+
@user_groups |= ['registered'] unless current_user.new_record?
|
35
40
|
@user_groups
|
36
41
|
end
|
37
42
|
|
@@ -42,21 +47,21 @@ module Hydra::Ability
|
|
42
47
|
|
43
48
|
|
44
49
|
# Requires no arguments, but accepts 2 arguments for backwards compatibility
|
45
|
-
def hydra_default_permissions(
|
46
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to hydra_default_permissions, use the instance_variables", caller()) if
|
50
|
+
def hydra_default_permissions(deprecated_user=nil, deprecated_session=nil)
|
51
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to hydra_default_permissions, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
47
52
|
logger.debug("Usergroups are " + user_groups.inspect)
|
48
53
|
self.ability_logic.each do |method|
|
49
54
|
send(method)
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
53
|
-
def create_permissions(
|
54
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to create_permissions, use the instance_variables", caller()) if
|
58
|
+
def create_permissions(deprecated_user=nil, deprecated_session=nil)
|
59
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to create_permissions, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
55
60
|
can :create, :all if user_groups.include? 'registered'
|
56
61
|
end
|
57
62
|
|
58
|
-
def edit_permissions(
|
59
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to edit_permissions, use the instance_variables", caller()) if
|
63
|
+
def edit_permissions(deprecated_user=nil, deprecated_session=nil)
|
64
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to edit_permissions, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
60
65
|
can [:edit, :update, :destroy], String do |pid|
|
61
66
|
test_edit(pid)
|
62
67
|
end
|
@@ -71,8 +76,8 @@ module Hydra::Ability
|
|
71
76
|
end
|
72
77
|
end
|
73
78
|
|
74
|
-
def read_permissions(
|
75
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to read_permissions, use the instance_variables", caller()) if
|
79
|
+
def read_permissions(deprecated_user=nil, deprecated_session=nil)
|
80
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to read_permissions, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
76
81
|
can :read, String do |pid|
|
77
82
|
test_read(pid)
|
78
83
|
end
|
@@ -89,8 +94,8 @@ module Hydra::Ability
|
|
89
94
|
|
90
95
|
|
91
96
|
## Override custom permissions in your own app to add more permissions beyond what is defined by default.
|
92
|
-
def custom_permissions(
|
93
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to custom_permissions, use the instance_variables", caller()) if
|
97
|
+
def custom_permissions(deprecated_user=nil, deprecated_session=nil)
|
98
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to custom_permissions, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
94
99
|
end
|
95
100
|
|
96
101
|
protected
|
@@ -102,22 +107,22 @@ module Hydra::Ability
|
|
102
107
|
end
|
103
108
|
|
104
109
|
|
105
|
-
def test_edit(pid,
|
106
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to test_edit, use the instance_variables", caller()) if
|
110
|
+
def test_edit(pid, deprecated_user=nil, deprecated_session=nil)
|
111
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to test_edit, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
107
112
|
permissions_doc(pid)
|
108
|
-
logger.debug("[CANCAN] Checking edit permissions for user: #{
|
113
|
+
logger.debug("[CANCAN] Checking edit permissions for user: #{current_user.user_key} with groups: #{user_groups.inspect}")
|
109
114
|
group_intersection = user_groups & edit_groups
|
110
|
-
result = !group_intersection.empty? || edit_persons.include?(
|
115
|
+
result = !group_intersection.empty? || edit_persons.include?(current_user.user_key)
|
111
116
|
logger.debug("[CANCAN] decision: #{result}")
|
112
117
|
result
|
113
118
|
end
|
114
119
|
|
115
|
-
def test_read(pid,
|
116
|
-
ActiveSupport::Deprecation.warn("No need to pass user or session to test_read, use the instance_variables", caller()) if
|
120
|
+
def test_read(pid, deprecated_user=nil, deprecated_session=nil)
|
121
|
+
ActiveSupport::Deprecation.warn("No need to pass user or session to test_read, use the instance_variables", caller()) if deprecated_user || deprecated_session
|
117
122
|
permissions_doc(pid)
|
118
|
-
logger.debug("[CANCAN] Checking edit permissions for user: #{
|
123
|
+
logger.debug("[CANCAN] Checking edit permissions for user: #{current_user.user_key} with groups: #{user_groups.inspect}")
|
119
124
|
group_intersection = user_groups & read_groups
|
120
|
-
result = !group_intersection.empty? || read_persons.include?(
|
125
|
+
result = !group_intersection.empty? || read_persons.include?(current_user.user_key)
|
121
126
|
logger.debug("[CANCAN] decision: #{result}")
|
122
127
|
result
|
123
128
|
end
|
data/lib/hydra/user.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-access-controls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
5
|
-
prerelease:
|
4
|
+
version: 5.4.0.pre1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Chris Beer
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-01-
|
14
|
+
date: 2013-01-23 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -186,15 +186,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
187
|
none: false
|
188
188
|
requirements:
|
189
|
-
- - ! '
|
189
|
+
- - ! '>'
|
190
190
|
- !ruby/object:Gem::Version
|
191
|
-
version:
|
192
|
-
segments:
|
193
|
-
- 0
|
194
|
-
hash: -2784704934018708392
|
191
|
+
version: 1.3.1
|
195
192
|
requirements: []
|
196
193
|
rubyforge_project:
|
197
|
-
rubygems_version: 1.8.
|
194
|
+
rubygems_version: 1.8.23
|
198
195
|
signing_key:
|
199
196
|
specification_version: 3
|
200
197
|
summary: Access controls for project hydra
|