declarative_authorization 0.3.2.3

Sign up to get free protection for your applications and to get access to all the features.
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 +105 -0
data/test/schema.sql ADDED
@@ -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,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: declarative_authorization
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2.3
5
+ platform: ruby
6
+ authors:
7
+ - Steffen Bartsch
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-12 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.1.0
24
+ version:
25
+ description:
26
+ email: sbartsch@tzi.org
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README.rdoc
33
+ - CHANGELOG
34
+ files:
35
+ - CHANGELOG
36
+ - MIT-LICENSE
37
+ - README.rdoc
38
+ - Rakefile
39
+ - authorization_rules.dist.rb
40
+ - garlic_example.rb
41
+ - init.rb
42
+ - app/controllers/authorization_rules_controller.rb
43
+ - app/controllers/authorization_usages_controller.rb
44
+ - app/helpers/authorization_rules_helper.rb
45
+ - app/views/authorization_usages/index.html.erb
46
+ - app/views/authorization_rules/index.html.erb
47
+ - app/views/authorization_rules/_show_graph.erb
48
+ - app/views/authorization_rules/_change.erb
49
+ - app/views/authorization_rules/_suggestions.erb
50
+ - app/views/authorization_rules/graph.dot.erb
51
+ - app/views/authorization_rules/change.html.erb
52
+ - app/views/authorization_rules/graph.html.erb
53
+ - config/routes.rb
54
+ - lib/declarative_authorization.rb
55
+ - lib/declarative_authorization/in_controller.rb
56
+ - lib/declarative_authorization/reader.rb
57
+ - lib/declarative_authorization/rails_legacy.rb
58
+ - lib/declarative_authorization/obligation_scope.rb
59
+ - lib/declarative_authorization/in_model.rb
60
+ - lib/declarative_authorization/helper.rb
61
+ - lib/declarative_authorization/development_support/analyzer.rb
62
+ - lib/declarative_authorization/development_support/change_analyzer.rb
63
+ - lib/declarative_authorization/development_support/change_supporter.rb
64
+ - lib/declarative_authorization/development_support/development_support.rb
65
+ - lib/declarative_authorization/authorization.rb
66
+ - lib/declarative_authorization/maintenance.rb
67
+ - test/authorization_test.rb
68
+ - test/schema.sql
69
+ - test/maintenance_test.rb
70
+ - test/model_test.rb
71
+ - test/controller_test.rb
72
+ - test/helper_test.rb
73
+ - test/dsl_reader_test.rb
74
+ - test/controller_filter_resource_access_test.rb
75
+ - test/test_helper.rb
76
+ has_rdoc: true
77
+ homepage: http://github.com/stffn/declarative_authorization
78
+ licenses: []
79
+
80
+ post_install_message:
81
+ rdoc_options: []
82
+
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 1.8.6
90
+ version:
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: "0"
96
+ version:
97
+ requirements: []
98
+
99
+ rubyforge_project:
100
+ rubygems_version: 1.3.5
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: declarative_authorization is a Rails plugin for authorization based on readable authorization rules.
104
+ test_files: []
105
+