ghart-declarative_authorization 0.3.2.4

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 (42) hide show
  1. data/CHANGELOG +83 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +510 -0
  4. data/Rakefile +43 -0
  5. data/app/controllers/authorization_rules_controller.rb +259 -0
  6. data/app/controllers/authorization_usages_controller.rb +23 -0
  7. data/app/helpers/authorization_rules_helper.rb +187 -0
  8. data/app/views/authorization_rules/_change.erb +58 -0
  9. data/app/views/authorization_rules/_show_graph.erb +37 -0
  10. data/app/views/authorization_rules/_suggestions.erb +48 -0
  11. data/app/views/authorization_rules/change.html.erb +152 -0
  12. data/app/views/authorization_rules/graph.dot.erb +68 -0
  13. data/app/views/authorization_rules/graph.html.erb +40 -0
  14. data/app/views/authorization_rules/index.html.erb +17 -0
  15. data/app/views/authorization_usages/index.html.erb +36 -0
  16. data/authorization_rules.dist.rb +20 -0
  17. data/config/routes.rb +7 -0
  18. data/garlic_example.rb +20 -0
  19. data/init.rb +5 -0
  20. data/lib/declarative_authorization.rb +15 -0
  21. data/lib/declarative_authorization/authorization.rb +634 -0
  22. data/lib/declarative_authorization/development_support/analyzer.rb +252 -0
  23. data/lib/declarative_authorization/development_support/change_analyzer.rb +253 -0
  24. data/lib/declarative_authorization/development_support/change_supporter.rb +620 -0
  25. data/lib/declarative_authorization/development_support/development_support.rb +243 -0
  26. data/lib/declarative_authorization/helper.rb +60 -0
  27. data/lib/declarative_authorization/in_controller.rb +597 -0
  28. data/lib/declarative_authorization/in_model.rb +159 -0
  29. data/lib/declarative_authorization/maintenance.rb +182 -0
  30. data/lib/declarative_authorization/obligation_scope.rb +308 -0
  31. data/lib/declarative_authorization/rails_legacy.rb +14 -0
  32. data/lib/declarative_authorization/reader.rb +441 -0
  33. data/test/authorization_test.rb +827 -0
  34. data/test/controller_filter_resource_access_test.rb +394 -0
  35. data/test/controller_test.rb +386 -0
  36. data/test/dsl_reader_test.rb +157 -0
  37. data/test/helper_test.rb +171 -0
  38. data/test/maintenance_test.rb +46 -0
  39. data/test/model_test.rb +1308 -0
  40. data/test/schema.sql +54 -0
  41. data/test/test_helper.rb +118 -0
  42. metadata +106 -0
@@ -0,0 +1,54 @@
1
+ CREATE TABLE 'test_models' (
2
+ 'id' INTEGER PRIMARY KEY NOT NULL,
3
+ 'test_attr_through_id' INTEGER,
4
+ 'content' text,
5
+ 'country_id' integer,
6
+ 'created_at' datetime,
7
+ 'updated_at' datetime
8
+ );
9
+
10
+ CREATE TABLE 'test_attrs' (
11
+ 'id' INTEGER PRIMARY KEY NOT NULL,
12
+ 'test_model_id' integer,
13
+ 'test_another_model_id' integer,
14
+ 'test_a_third_model_id' integer,
15
+ 'branch_id' integer,
16
+ 'company_id' integer,
17
+ 'test_attr_through_id' INTEGER,
18
+ 'n_way_join_item_id' INTEGER,
19
+ 'test_model_security_model_id' integer,
20
+ 'attr' integer default 1
21
+ );
22
+
23
+ CREATE TABLE 'test_attr_throughs' (
24
+ 'id' INTEGER PRIMARY KEY NOT NULL,
25
+ 'test_attr_id' integer
26
+ );
27
+
28
+ CREATE TABLE 'test_model_security_models' (
29
+ 'id' INTEGER PRIMARY KEY NOT NULL,
30
+ 'attr' integer default 1,
31
+ 'attr_2' integer default 1
32
+ );
33
+
34
+ CREATE TABLE 'n_way_join_items' (
35
+ 'id' INTEGER PRIMARY KEY NOT NULL
36
+ );
37
+
38
+ CREATE TABLE 'branches' (
39
+ 'id' INTEGER PRIMARY KEY NOT NULL,
40
+ 'company_id' integer,
41
+ 'name' text
42
+ );
43
+
44
+ CREATE TABLE 'companies' (
45
+ 'id' INTEGER PRIMARY KEY NOT NULL,
46
+ 'country_id' integer,
47
+ 'type' text,
48
+ 'name' text
49
+ );
50
+
51
+ CREATE TABLE 'countries' (
52
+ 'id' INTEGER PRIMARY KEY NOT NULL,
53
+ 'name' text
54
+ );
@@ -0,0 +1,118 @@
1
+ require 'test/unit'
2
+ RAILS_ROOT = File.join(File.dirname(__FILE__), %w{.. .. .. ..})
3
+ require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization rails_legacy})
4
+ require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization authorization})
5
+ require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization in_controller})
6
+
7
+ unless defined?(ActiveRecord)
8
+ if File.directory? RAILS_ROOT + 'config'
9
+ puts 'using config/boot.rb'
10
+ ENV['RAILS_ENV'] = 'test'
11
+ require File.join(RAILS_ROOT, 'config', 'boot.rb')
12
+ else
13
+ # simply use installed gems if available
14
+ puts 'using rubygems'
15
+ require 'rubygems'
16
+ gem 'actionpack'; gem 'activerecord'; gem 'activesupport'; gem 'rails'
17
+ end
18
+
19
+ %w(action_pack action_controller active_record active_support initializer).each {|f| require f}
20
+ end
21
+
22
+ begin
23
+ require 'ruby-debug'
24
+ rescue MissingSourceFile; end
25
+
26
+
27
+ class MockDataObject
28
+ def initialize (attrs = {})
29
+ attrs.each do |key, value|
30
+ instance_variable_set(:"@#{key}", value)
31
+ self.class.class_eval do
32
+ attr_reader key
33
+ end
34
+ end
35
+ end
36
+
37
+ def self.descends_from_active_record?
38
+ true
39
+ end
40
+
41
+ def self.table_name
42
+ name.tableize
43
+ end
44
+
45
+ def self.name
46
+ "Mock"
47
+ end
48
+
49
+ def self.find(*args)
50
+ raise "Couldn't find #{self.name} with id #{args[0].inspect}" unless args[0]
51
+ new :id => args[0]
52
+ end
53
+ end
54
+
55
+ class MockUser < MockDataObject
56
+ def initialize (*roles)
57
+ options = roles.last.is_a?(::Hash) ? roles.pop : {}
58
+ super(options.merge(:role_symbols => roles, :login => hash))
59
+ end
60
+
61
+ def initialize_copy (other)
62
+ @role_symbols = @role_symbols.clone
63
+ end
64
+ end
65
+
66
+ class MocksController < ActionController::Base
67
+ attr_accessor :current_user
68
+ attr_writer :authorization_engine
69
+
70
+ def authorized?
71
+ !!@authorized
72
+ end
73
+
74
+ def self.define_action_methods (*methods)
75
+ methods.each do |method|
76
+ define_method method do
77
+ @authorized = true
78
+ render :text => 'nothing'
79
+ end
80
+ end
81
+ end
82
+
83
+ def self.define_resource_actions
84
+ define_action_methods :index, :show, :edit, :update, :new, :create, :destroy
85
+ end
86
+
87
+ def logger (*args)
88
+ Class.new do
89
+ def warn(*args)
90
+ #p args
91
+ end
92
+ alias_method :info, :warn
93
+ alias_method :debug, :warn
94
+ def warn?; end
95
+ alias_method :info?, :warn?
96
+ alias_method :debug?, :warn?
97
+ end.new
98
+ end
99
+ end
100
+
101
+ ActionController::Routing::Routes.draw do |map|
102
+ map.connect ':controller/:action/:id'
103
+ end
104
+ ActionController::Base.send :include, Authorization::AuthorizationInController
105
+ require "action_controller/test_process"
106
+
107
+ class Test::Unit::TestCase
108
+ def request! (user, action, reader, params = {})
109
+ action = action.to_sym if action.is_a?(String)
110
+ @controller.current_user = user
111
+ @controller.authorization_engine = Authorization::Engine.new(reader)
112
+
113
+ ((params.delete(:clear) || []) + [:@authorized]).each do |var|
114
+ @controller.instance_variable_set(var, nil)
115
+ end
116
+ get action, params
117
+ end
118
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ghart-declarative_authorization
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2.4
5
+ platform: ruby
6
+ authors:
7
+ - Steffen Bartsch
8
+ - Greg Hart
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-11-01 01:00:00 -06:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rails
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 2.1.0
25
+ version:
26
+ description:
27
+ email: sbartsch@tzi.org
28
+ executables: []
29
+
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - README.rdoc
34
+ - CHANGELOG
35
+ files:
36
+ - CHANGELOG
37
+ - MIT-LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - authorization_rules.dist.rb
41
+ - garlic_example.rb
42
+ - init.rb
43
+ - app/controllers/authorization_rules_controller.rb
44
+ - app/controllers/authorization_usages_controller.rb
45
+ - app/helpers/authorization_rules_helper.rb
46
+ - app/views/authorization_usages/index.html.erb
47
+ - app/views/authorization_rules/index.html.erb
48
+ - app/views/authorization_rules/_show_graph.erb
49
+ - app/views/authorization_rules/_change.erb
50
+ - app/views/authorization_rules/_suggestions.erb
51
+ - app/views/authorization_rules/graph.dot.erb
52
+ - app/views/authorization_rules/change.html.erb
53
+ - app/views/authorization_rules/graph.html.erb
54
+ - config/routes.rb
55
+ - lib/declarative_authorization.rb
56
+ - lib/declarative_authorization/in_controller.rb
57
+ - lib/declarative_authorization/reader.rb
58
+ - lib/declarative_authorization/rails_legacy.rb
59
+ - lib/declarative_authorization/obligation_scope.rb
60
+ - lib/declarative_authorization/in_model.rb
61
+ - lib/declarative_authorization/helper.rb
62
+ - lib/declarative_authorization/development_support/analyzer.rb
63
+ - lib/declarative_authorization/development_support/change_analyzer.rb
64
+ - lib/declarative_authorization/development_support/change_supporter.rb
65
+ - lib/declarative_authorization/development_support/development_support.rb
66
+ - lib/declarative_authorization/authorization.rb
67
+ - lib/declarative_authorization/maintenance.rb
68
+ - test/authorization_test.rb
69
+ - test/schema.sql
70
+ - test/maintenance_test.rb
71
+ - test/model_test.rb
72
+ - test/controller_test.rb
73
+ - test/helper_test.rb
74
+ - test/dsl_reader_test.rb
75
+ - test/controller_filter_resource_access_test.rb
76
+ - test/test_helper.rb
77
+ has_rdoc: true
78
+ homepage: http://github.com/ghart/declarative_authorization
79
+ licenses: []
80
+
81
+ post_install_message:
82
+ rdoc_options: []
83
+
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 1.8.6
91
+ version:
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ requirements: []
99
+
100
+ rubyforge_project:
101
+ rubygems_version: 1.3.5
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: declarative_authorization is a Rails plugin for authorization based on readable authorization rules.
105
+ test_files: []
106
+