annotation_security 1.0.1 → 1.0.2

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.
Files changed (63) hide show
  1. data/CHANGELOG.md +14 -0
  2. data/HOW-TO.md +275 -0
  3. data/{MIT-LICENSE → LICENSE} +1 -1
  4. data/README.md +39 -0
  5. data/Rakefile +62 -55
  6. data/assets/app/helpers/annotation_security_helper.rb +8 -8
  7. data/assets/config/initializers/annotation_security.rb +11 -11
  8. data/assets/config/security/relations.rb +20 -20
  9. data/assets/vendor/plugins/annotation_security/init.rb +13 -13
  10. data/bin/annotation_security +7 -7
  11. data/lib/annotation_security/exceptions.rb +124 -124
  12. data/lib/annotation_security/exec.rb +188 -188
  13. data/lib/annotation_security/filters.rb +37 -37
  14. data/lib/annotation_security/includes/action_controller.rb +144 -143
  15. data/lib/annotation_security/includes/active_record.rb +27 -27
  16. data/lib/annotation_security/includes/helper.rb +215 -215
  17. data/lib/annotation_security/includes/resource.rb +84 -84
  18. data/lib/annotation_security/includes/role.rb +30 -30
  19. data/lib/annotation_security/includes/user.rb +26 -26
  20. data/lib/annotation_security/manager/policy_factory.rb +29 -29
  21. data/lib/annotation_security/manager/policy_manager.rb +79 -79
  22. data/lib/annotation_security/manager/relation_loader.rb +272 -272
  23. data/lib/annotation_security/manager/resource_manager.rb +36 -36
  24. data/lib/annotation_security/manager/right_loader.rb +87 -87
  25. data/lib/annotation_security/model_observer.rb +61 -61
  26. data/lib/annotation_security/policy/abstract_policy.rb +344 -344
  27. data/lib/annotation_security/policy/abstract_static_policy.rb +75 -75
  28. data/lib/annotation_security/policy/all_resources_policy.rb +20 -20
  29. data/lib/annotation_security/policy/rule.rb +340 -340
  30. data/lib/annotation_security/policy/rule_set.rb +138 -138
  31. data/lib/annotation_security/rails.rb +38 -38
  32. data/lib/annotation_security/user_wrapper.rb +73 -73
  33. data/lib/annotation_security/utils.rb +141 -141
  34. data/lib/annotation_security/version.rb +10 -0
  35. data/lib/annotation_security.rb +102 -97
  36. data/lib/extensions/action_controller.rb +32 -32
  37. data/lib/extensions/active_record.rb +34 -34
  38. data/lib/extensions/filter.rb +133 -133
  39. data/lib/extensions/object.rb +10 -10
  40. data/lib/security_context.rb +589 -551
  41. data/spec/annotation_security/exceptions_spec.rb +16 -16
  42. data/spec/annotation_security/includes/helper_spec.rb +82 -82
  43. data/spec/annotation_security/manager/policy_manager_spec.rb +15 -15
  44. data/spec/annotation_security/manager/resource_manager_spec.rb +17 -17
  45. data/spec/annotation_security/manager/right_loader_spec.rb +17 -17
  46. data/spec/annotation_security/policy/abstract_policy_spec.rb +16 -16
  47. data/spec/annotation_security/policy/all_resources_policy_spec.rb +24 -24
  48. data/spec/annotation_security/policy/rule_set_spec.rb +112 -112
  49. data/spec/annotation_security/policy/rule_spec.rb +77 -77
  50. data/spec/annotation_security/policy/test_policy_spec.rb +80 -80
  51. data/spec/annotation_security/security_context_spec.rb +78 -78
  52. data/spec/annotation_security/utils_spec.rb +73 -73
  53. data/spec/helper/test_controller.rb +65 -65
  54. data/spec/helper/test_helper.rb +5 -5
  55. data/spec/helper/test_relations.rb +6 -6
  56. data/spec/helper/test_resource.rb +38 -38
  57. data/spec/helper/test_role.rb +21 -21
  58. data/spec/helper/test_user.rb +31 -31
  59. data/spec/rails_stub.rb +37 -37
  60. metadata +94 -72
  61. data/CHANGELOG +0 -2
  62. data/HOW-TO +0 -261
  63. data/README +0 -39
@@ -1,66 +1,66 @@
1
- class TestController < ActionController::Base
2
-
3
- describe :show, 'shows a test_resource'
4
- describe :edit, 'edit some test_resources'
5
- describe :show_edit, 'shows a test_resource', 'edits a test_resource'
6
- describe :edit_with_render, 'edits the test_resource in @resource'
7
- describe :delete, 'delete test_resource by :id'
8
- describe :list, 'list all test_resources in @list'
9
-
10
-
11
- def test_init(action, params)
12
- @action = action
13
- @params = params
14
- end
15
-
16
- def action_name
17
- @action
18
- end
19
-
20
- def params
21
- @params
22
- end
23
-
24
- def show
25
- @resource = TestResource.find params[:id]
26
- end
27
-
28
- def edit
29
- @resource = TestResource.find params[:id]
30
- end
31
-
32
- def show_edit
33
- @resource = TestResource.find params[:id]
34
- end
35
-
36
- def edit_with_render
37
- @resource = TestResource.find params[:id1]
38
- render 'view'
39
- @resource = TestResource.find params[:id2]
40
- end
41
-
42
- def delete
43
- self.class.enter_delete
44
- @resource = TestResource.find params[:id]
45
- end
46
-
47
- def list
48
- r1 = TestResource.find params[:id1]
49
- r2 = TestResource.find params[:id2]
50
- @list = [r1, r2]
51
- end
52
-
53
- def render(*args)
54
- super(*args)
55
- self.class.exit_render
56
- end
57
-
58
- # callbacks used for mocking
59
-
60
- def self.enter_delete
61
- end
62
-
63
- def self.exit_render
64
- end
65
-
1
+ class TestController < ActionController::Base
2
+
3
+ describe :show, 'shows a test_resource'
4
+ describe :edit, 'edit some test_resources'
5
+ describe :show_edit, 'shows a test_resource', 'edits a test_resource'
6
+ describe :edit_with_render, 'edits the test_resource in @resource'
7
+ describe :delete, 'delete test_resource by :id'
8
+ describe :list, 'list all test_resources in @list'
9
+
10
+
11
+ def test_init(action, params)
12
+ @action = action
13
+ @params = params
14
+ end
15
+
16
+ def action_name
17
+ @action
18
+ end
19
+
20
+ def params
21
+ @params
22
+ end
23
+
24
+ def show
25
+ @resource = TestResource.find params[:id]
26
+ end
27
+
28
+ def edit
29
+ @resource = TestResource.find params[:id]
30
+ end
31
+
32
+ def show_edit
33
+ @resource = TestResource.find params[:id]
34
+ end
35
+
36
+ def edit_with_render
37
+ @resource = TestResource.find params[:id1]
38
+ render 'view'
39
+ @resource = TestResource.find params[:id2]
40
+ end
41
+
42
+ def delete
43
+ self.class.enter_delete
44
+ @resource = TestResource.find params[:id]
45
+ end
46
+
47
+ def list
48
+ r1 = TestResource.find params[:id1]
49
+ r2 = TestResource.find params[:id2]
50
+ @list = [r1, r2]
51
+ end
52
+
53
+ def render(*args)
54
+ super(*args)
55
+ self.class.exit_render
56
+ end
57
+
58
+ # callbacks used for mocking
59
+
60
+ def self.enter_delete
61
+ end
62
+
63
+ def self.exit_render
64
+ end
65
+
66
66
  end
@@ -1,5 +1,5 @@
1
- class TestHelper
2
-
3
- include AnnotationSecurity::Helper
4
-
5
- end
1
+ class TestHelper
2
+
3
+ include AnnotationSecurity::Helper
4
+
5
+ end
@@ -1,7 +1,7 @@
1
- AnnotationSecurity.define_relations(:test_resource) do
2
-
3
- owner do |user, res|
4
- user.name == res.name
5
- end
6
-
1
+ AnnotationSecurity.define_relations(:test_resource) do
2
+
3
+ owner do |user, res|
4
+ user.name == res.name
5
+ end
6
+
7
7
  end
@@ -1,39 +1,39 @@
1
- class TestResource
2
-
3
- include AnnotationSecurity::Resource
4
-
5
- self.resource_type = :test_resource
6
-
7
- def self.find(arg)
8
- obj = new arg
9
-
10
- # normally, this is done by a model observer
11
- SecurityContext.observe obj
12
-
13
- obj
14
- end
15
-
16
- def self.get_resource(arg)
17
- return nil if arg.nil?
18
- return arg if arg.is_a? self
19
- new arg
20
- end
21
-
22
- def initialize(name = "")
23
- @name = name
24
- end
25
-
26
- def name
27
- @name
28
- end
29
-
30
- def ==(other)
31
- return false unless other.is_a? self.class
32
- name == other.name
33
- end
34
-
35
- def to_s
36
- "<TestResource:#{name}>"
37
- end
38
-
1
+ class TestResource
2
+
3
+ include AnnotationSecurity::Resource
4
+
5
+ self.resource_type = :test_resource
6
+
7
+ def self.find(arg)
8
+ obj = new arg
9
+
10
+ # normally, this is done by a model observer
11
+ SecurityContext.observe obj
12
+
13
+ obj
14
+ end
15
+
16
+ def self.get_resource(arg)
17
+ return nil if arg.nil?
18
+ return arg if arg.is_a? self
19
+ new arg
20
+ end
21
+
22
+ def initialize(name = "")
23
+ @name = name
24
+ end
25
+
26
+ def name
27
+ @name
28
+ end
29
+
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ name == other.name
33
+ end
34
+
35
+ def to_s
36
+ "<TestResource:#{name}>"
37
+ end
38
+
39
39
  end
@@ -1,22 +1,22 @@
1
- class TestRole
2
-
3
- include AnnotationSecurity::Role
4
-
5
- def initialize(name,user)
6
- @name = name
7
- @user = user
8
- end
9
-
10
- def role_name
11
- @name
12
- end
13
-
14
- def name
15
- role_name
16
- end
17
-
18
- def user
19
- @user
20
- end
21
-
1
+ class TestRole
2
+
3
+ include AnnotationSecurity::Role
4
+
5
+ def initialize(name,user)
6
+ @name = name
7
+ @user = user
8
+ end
9
+
10
+ def role_name
11
+ @name
12
+ end
13
+
14
+ def name
15
+ role_name
16
+ end
17
+
18
+ def user
19
+ @user
20
+ end
21
+
22
22
  end
@@ -1,32 +1,32 @@
1
- class TestUser
2
-
3
- include AnnotationSecurity::User
4
-
5
- def initialize(name='user_name')
6
- @name = name
7
- @one_role = TestRole.new(:one,self)
8
- @many_roles = [
9
- TestRole.new(:a,self), TestRole.new(:b,self), TestRole.new(:c,self)]
10
- end
11
-
12
- def user_name
13
- @name
14
- end
15
-
16
- def name
17
- user_name
18
- end
19
-
20
- def as_one_role
21
- @one_role
22
- end
23
-
24
- def as_many_roles
25
- @many_roles
26
- end
27
-
28
- def to_s
29
- "<TestUser:#{name}>"
30
- end
31
-
1
+ class TestUser
2
+
3
+ include AnnotationSecurity::User
4
+
5
+ def initialize(name='user_name')
6
+ @name = name
7
+ @one_role = TestRole.new(:one,self)
8
+ @many_roles = [
9
+ TestRole.new(:a,self), TestRole.new(:b,self), TestRole.new(:c,self)]
10
+ end
11
+
12
+ def user_name
13
+ @name
14
+ end
15
+
16
+ def name
17
+ user_name
18
+ end
19
+
20
+ def as_one_role
21
+ @one_role
22
+ end
23
+
24
+ def as_many_roles
25
+ @many_roles
26
+ end
27
+
28
+ def to_s
29
+ "<TestUser:#{name}>"
30
+ end
31
+
32
32
  end
data/spec/rails_stub.rb CHANGED
@@ -1,38 +1,38 @@
1
- # AnnoationSecurity requires rails.
2
- # Here are some stubs to simulate a rails environment for testing.
3
- #
4
-
5
- RAILS_ROOT = ''
6
- RAILS_ENV = {}
7
-
8
- class ConfigStub
9
- def config
10
- self
11
- end
12
- end
13
-
14
- module ActiveRecord
15
- class Observer
16
- def self.observe(*args)
17
- end
18
- end
19
- end
20
-
21
- module ActionController
22
- class Base
23
- def render(*args)
24
- end
25
- def redirect_to(*args)
26
- end
27
- end
28
- module Routing
29
- class Routes
30
- end
31
- end
32
- module Filters
33
- class Filter
34
- end
35
- class AroundFilter < Filter
36
- end
37
- end
1
+ # AnnoationSecurity requires rails.
2
+ # Here are some stubs to simulate a rails environment for testing.
3
+ #
4
+
5
+ RAILS_ROOT = ''
6
+ RAILS_ENV = {}
7
+
8
+ class ConfigStub
9
+ def config
10
+ self
11
+ end
12
+ end
13
+
14
+ module ActiveRecord
15
+ class Observer
16
+ def self.observe(*args)
17
+ end
18
+ end
19
+ end
20
+
21
+ module ActionController
22
+ class Base
23
+ def render(*args)
24
+ end
25
+ def redirect_to(*args)
26
+ end
27
+ end
28
+ module Routing
29
+ class Routes
30
+ end
31
+ end
32
+ module Filters
33
+ class Filter
34
+ end
35
+ class AroundFilter < Filter
36
+ end
37
+ end
38
38
  end
metadata CHANGED
@@ -1,73 +1,98 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: annotation_security
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Nico Rehwaldt, Arian Treffer
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2010-03-13 00:00:00 +01:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2013-03-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: action_annotation
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.1
17
22
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
23
29
  version: 1.0.1
24
- version:
25
- - !ruby/object:Gem::Dependency
30
+ - !ruby/object:Gem::Dependency
26
31
  name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 2.3.18
27
38
  type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 2.3.5
34
- version:
35
- - !ruby/object:Gem::Dependency
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.18
46
+ - !ruby/object:Gem::Dependency
36
47
  name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.3.2
37
54
  type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 1.2.0
44
- version:
45
- - !ruby/object:Gem::Dependency
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.2
62
+ - !ruby/object:Gem::Dependency
46
63
  name: mocha
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 0.9.8
47
70
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
53
77
  version: 0.9.8
54
- version:
55
- description: AnnotationSecurity provides a role based security model with automated rule evaluation for Ruby on Rails. It allows you to define user-resource-relations and rights in separate files, keeping your controllers and views free from any security logic. See the gem's homepage for an example.
78
+ description: AnnotationSecurity provides a role based security model with automated
79
+ rule evaluation for Ruby on Rails. It allows you to define user-resource-relations
80
+ and rights in separate files, keeping your controllers and views free from any security
81
+ logic. See the gem's homepage for an example.
56
82
  email: ruby@nixis.de
57
- executables:
83
+ executables:
58
84
  - annotation_security
59
85
  extensions: []
60
-
61
- extra_rdoc_files:
62
- - README
63
- - MIT-LICENSE
64
- - CHANGELOG
65
- - HOW-TO
66
- files:
67
- - CHANGELOG
68
- - MIT-LICENSE
69
- - README
70
- - HOW-TO
86
+ extra_rdoc_files:
87
+ - README.md
88
+ - LICENSE
89
+ - CHANGELOG.md
90
+ - HOW-TO.md
91
+ files:
92
+ - CHANGELOG.md
93
+ - LICENSE
94
+ - README.md
95
+ - HOW-TO.md
71
96
  - Rakefile
72
97
  - bin/annotation_security
73
98
  - lib/annotation_security/exceptions.rb
@@ -93,6 +118,7 @@ files:
93
118
  - lib/annotation_security/rails.rb
94
119
  - lib/annotation_security/user_wrapper.rb
95
120
  - lib/annotation_security/utils.rb
121
+ - lib/annotation_security/version.rb
96
122
  - lib/annotation_security.rb
97
123
  - lib/extensions/action_controller.rb
98
124
  - lib/extensions/active_record.rb
@@ -125,33 +151,29 @@ files:
125
151
  - assets/config/security/relations.rb
126
152
  - assets/config/security/rights.yml
127
153
  - assets/vendor/plugins/annotation_security/init.rb
128
- has_rdoc: true
129
- homepage: http://tech.lefedt.de/2010/3/annotation-based-security-for-rails
154
+ homepage: http://github.com/Nikku/annotation_security
130
155
  licenses: []
131
-
132
156
  post_install_message:
133
157
  rdoc_options: []
134
-
135
- require_paths:
158
+ require_paths:
136
159
  - lib
137
- required_ruby_version: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- version: "0"
142
- version:
143
- required_rubygems_version: !ruby/object:Gem::Requirement
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- version: "0"
148
- version:
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
149
172
  requirements: []
150
-
151
173
  rubyforge_project:
152
- rubygems_version: 1.3.5
174
+ rubygems_version: 1.8.23
153
175
  signing_key:
154
176
  specification_version: 3
155
- summary: A role based security model for rails applications with descriptive definitions and automated evaluation.
177
+ summary: A role based security model for rails applications with descriptive definitions
178
+ and automated evaluation.
156
179
  test_files: []
157
-
data/CHANGELOG DELETED
@@ -1,2 +0,0 @@
1
- = 1.0.1
2
- * first public release