declarative_authorization 0.5.5 → 0.5.6
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/CHANGELOG +10 -0
- data/README.rdoc +5 -3
- data/Rakefile +21 -3
- data/lib/declarative_authorization.rb +5 -3
- data/lib/declarative_authorization/authorization.rb +16 -3
- data/lib/declarative_authorization/maintenance.rb +4 -3
- data/lib/tasks/authorization_tasks.rake +7 -7
- data/test/authorization_test.rb +22 -2
- data/test/controller_filter_resource_access_test.rb +1 -1
- data/test/controller_test.rb +2 -2
- data/test/database.yml +3 -0
- data/test/dsl_reader_test.rb +1 -1
- data/test/helper_test.rb +2 -2
- data/test/maintenance_test.rb +2 -2
- data/test/model_test.rb +12 -1
- data/test/test_helper.rb +30 -22
- metadata +29 -25
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
** RELEASE 0.5.6 (Sep 23, 2012)
|
2
|
+
|
3
|
+
* Fix handling of stray object associations [jhawthorn]
|
4
|
+
|
5
|
+
* Improve test infrastructure [jhawthorn]
|
6
|
+
|
7
|
+
* Allow decl_auth to be used without ActiveRecord [bterkuile]
|
8
|
+
|
9
|
+
* Rule reloading in development based on changes [urkle/sb]
|
10
|
+
|
1
11
|
** RELEASE 0.5.5 (Jan 10, 2012)
|
2
12
|
|
3
13
|
* Update of handling of association proxies for Rails 3.2
|
data/README.rdoc
CHANGED
@@ -242,7 +242,7 @@ the conditions for manual rewrites.
|
|
242
242
|
== Authorization Rules
|
243
243
|
|
244
244
|
Authorization rules are defined in config/authorization_rules.rb
|
245
|
-
(Or redefine rules files path via +Authorization::
|
245
|
+
(Or redefine rules files path via +Authorization::AUTH_DSL_FILES+). E.g.
|
246
246
|
|
247
247
|
authorization do
|
248
248
|
role :admin do
|
@@ -515,8 +515,10 @@ sbartsch at tzi.org
|
|
515
515
|
|
516
516
|
Thanks to John Joseph Bachir, Dennis Blöte, Eike Carls, Damian Caruso, Kai Chen, Erik Dahlstrand,
|
517
517
|
Jeroen van Dijk, Alexander Dobriakov, Sebastian Dyck, Ari Epstein, Jeremy Friesen,
|
518
|
-
Tim Harper, John Hawthorn, hollownest, Daniel Kristensen, Jeremy Kleindl,
|
519
|
-
|
518
|
+
Tim Harper, John Hawthorn, hollownest, Daniel Kristensen, Jeremy Kleindl,
|
519
|
+
Benjamin ter Kuile, Brad Langhorst, Brian Langenfeld,
|
520
|
+
Georg Ledermann, Geoff Longman, Olly Lylo, Mark Mansour, Thomas Maurer, Kevin Moore,
|
521
|
+
Tyler Pickett, Edward Rudd, Sharagoz,
|
520
522
|
TJ Singleton, Mike Vincent, Joel Westerberg
|
521
523
|
|
522
524
|
|
data/Rakefile
CHANGED
@@ -2,12 +2,30 @@ require 'rake'
|
|
2
2
|
require 'rake/testtask'
|
3
3
|
require 'rake/rdoctask'
|
4
4
|
|
5
|
-
desc 'Default: run unit tests.'
|
6
|
-
task :default => :test
|
5
|
+
desc 'Default: run unit tests against all versions.'
|
6
|
+
task :default => 'bundles:test'
|
7
|
+
|
8
|
+
def run_for_bundles cmd
|
9
|
+
Dir['gemfiles/*.gemfile'].each do |gemfile|
|
10
|
+
puts "\n#{gemfile}: #{cmd}"
|
11
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
12
|
+
system(cmd)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
task 'bundles:install' do
|
17
|
+
run_for_bundles 'bundle install'
|
18
|
+
end
|
19
|
+
task 'bundles:update' do
|
20
|
+
run_for_bundles 'bundle update'
|
21
|
+
end
|
22
|
+
task 'bundles:test' do
|
23
|
+
run_for_bundles 'bundle exec rake test'
|
24
|
+
end
|
7
25
|
|
8
26
|
desc 'Test the authorization plugin.'
|
9
27
|
Rake::TestTask.new(:test) do |t|
|
10
|
-
t.libs << 'lib'
|
28
|
+
t.libs << 'lib' << 'test'
|
11
29
|
t.pattern = 'test/**/*_test.rb'
|
12
30
|
t.verbose = true
|
13
31
|
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
require File.join(%w{declarative_authorization rails_legacy})
|
2
2
|
require File.join(%w{declarative_authorization helper})
|
3
3
|
require File.join(%w{declarative_authorization in_controller})
|
4
|
-
|
5
|
-
require File.join(%w{declarative_authorization
|
4
|
+
if defined?(ActiveRecord)
|
5
|
+
require File.join(%w{declarative_authorization in_model})
|
6
|
+
require File.join(%w{declarative_authorization obligation_scope})
|
7
|
+
end
|
6
8
|
|
7
9
|
min_rails_version = "2.1.0"
|
8
10
|
if Rails::VERSION::STRING < min_rails_version
|
@@ -14,4 +16,4 @@ require File.join(%w{declarative_authorization railsengine}) if defined?(::Rails
|
|
14
16
|
ActionController::Base.send :include, Authorization::AuthorizationInController
|
15
17
|
ActionController::Base.helper Authorization::AuthorizationHelper
|
16
18
|
|
17
|
-
ActiveRecord::Base.send :include, Authorization::AuthorizationInModel
|
19
|
+
ActiveRecord::Base.send :include, Authorization::AuthorizationInModel if defined?(ActiveRecord)
|
@@ -164,7 +164,7 @@ module Authorization
|
|
164
164
|
# Example: permit!( :edit, :object => user.posts )
|
165
165
|
#
|
166
166
|
if Authorization.is_a_association_proxy?(options[:object]) && options[:object].respond_to?(:new)
|
167
|
-
options[:object] = options[:object].new
|
167
|
+
options[:object] = (Rails.version < "3.0" ? options[:object] : options[:object].scoped).new
|
168
168
|
end
|
169
169
|
|
170
170
|
options[:context] ||= options[:object] && (
|
@@ -233,6 +233,8 @@ module Authorization
|
|
233
233
|
|
234
234
|
permit!(privilege, :skip_attribute_test => true, :user => user, :context => options[:context])
|
235
235
|
|
236
|
+
return [] if roles.is_a?(Array) and not (roles & omnipotent_roles).empty?
|
237
|
+
|
236
238
|
attr_validator = AttributeValidator.new(self, user, nil, privilege, options[:context])
|
237
239
|
matching_auth_rules(roles, privileges, options[:context]).collect do |rule|
|
238
240
|
rule.obligations(attr_validator)
|
@@ -275,12 +277,23 @@ module Authorization
|
|
275
277
|
def roles_with_hierarchy_for(user)
|
276
278
|
flatten_roles(roles_for(user))
|
277
279
|
end
|
278
|
-
|
280
|
+
|
281
|
+
def self.development_reload?
|
282
|
+
if Rails.env.development?
|
283
|
+
mod_time = AUTH_DSL_FILES.map { |m| File.mtime(m) rescue Time.at(0) }.flatten.max
|
284
|
+
@@auth_dsl_last_modified ||= mod_time
|
285
|
+
if mod_time > @@auth_dsl_last_modified
|
286
|
+
@@auth_dsl_last_modified = mod_time
|
287
|
+
return true
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
279
292
|
# Returns an instance of Engine, which is created if there isn't one
|
280
293
|
# yet. If +dsl_file+ is given, it is passed on to Engine.new and
|
281
294
|
# a new instance is always created.
|
282
295
|
def self.instance (dsl_file = nil)
|
283
|
-
if dsl_file
|
296
|
+
if dsl_file or development_reload?
|
284
297
|
@@instance = new(dsl_file)
|
285
298
|
else
|
286
299
|
@@instance ||= new
|
@@ -60,9 +60,10 @@ module Authorization
|
|
60
60
|
end
|
61
61
|
rescue Errno::ENOENT
|
62
62
|
end
|
63
|
-
controllers =
|
64
|
-
|
65
|
-
|
63
|
+
controllers = ObjectSpace.each_object(Class).select do |obj|
|
64
|
+
obj.ancestors.include?(ActionController::Base) &&
|
65
|
+
obj != ActionController::Base &&
|
66
|
+
(!obj.name || obj.name.demodulize != 'ApplicationController')
|
66
67
|
end
|
67
68
|
|
68
69
|
controllers.inject({}) do |memo, controller|
|
@@ -2,10 +2,10 @@ namespace :auth do
|
|
2
2
|
desc "Lists all privileges used in controllers, views, models"
|
3
3
|
task :used_privileges do
|
4
4
|
# TODO note where privileges are used
|
5
|
-
require File.join(
|
6
|
-
require File.join(
|
5
|
+
require File.join(Rails.root, 'config', 'boot.rb')
|
6
|
+
require File.join(Rails.root, 'config', 'environment.rb')
|
7
7
|
controllers = [ApplicationController]
|
8
|
-
Dir.new("#{
|
8
|
+
Dir.new("#{Rails.root}/app/controllers").entries.each do |controller_file|
|
9
9
|
if controller_file =~ /_controller/
|
10
10
|
controllers << controller_file.gsub(".rb","").camelize.constantize
|
11
11
|
end
|
@@ -24,19 +24,19 @@ namespace :auth do
|
|
24
24
|
all += contr_perms.reject {|cp| cp[0].nil?}.collect {|cp| cp[0..1]}
|
25
25
|
end
|
26
26
|
|
27
|
-
model_all = `grep -l "Base\.using_access_control" #{
|
27
|
+
model_all = `grep -l "Base\.using_access_control" #{Rails.root}/config/*.rb #{Rails.root}/config/initializers/*.rb`.split("\n")
|
28
28
|
if model_all.count > 0
|
29
|
-
model_files = Dir.glob( "#{
|
29
|
+
model_files = Dir.glob( "#{Rails.root}/app/models/*.rb").reject do |item|
|
30
30
|
item.match(/_observer\.rb/)
|
31
31
|
end
|
32
32
|
else
|
33
|
-
model_files = `grep -l "^[[:space:]]*using_access_control" #{
|
33
|
+
model_files = `grep -l "^[[:space:]]*using_access_control" #{Rails.root}/app/models/*.rb`.split("\n")
|
34
34
|
end
|
35
35
|
models_with_ac = model_files.collect {|mf| mf.sub(/^.*\//, "").sub(".rb", "").tableize.to_sym}
|
36
36
|
model_security_privs = [:create, :read, :update, :delete]
|
37
37
|
models_with_ac.each {|m| perms += model_security_privs.collect{|msp| [msp, m]}}
|
38
38
|
|
39
|
-
grep_file_pattern = "#{
|
39
|
+
grep_file_pattern = "#{Rails.root}/app/models/*.rb #{Rails.root}/app/views/**/* #{Rails.root}/app/controllers/*.rb"
|
40
40
|
`grep "permitted_to?" #{grep_file_pattern}`.split("\n").each do |ptu|
|
41
41
|
file, grep_match = ptu.split(':', 2)
|
42
42
|
context = privilege = nil
|
data/test/authorization_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class AuthorizationTest < Test::Unit::TestCase
|
4
4
|
|
@@ -34,7 +34,7 @@ class AuthorizationTest < Test::Unit::TestCase
|
|
34
34
|
:user => MockUser.new(:test_role))
|
35
35
|
end
|
36
36
|
|
37
|
-
def
|
37
|
+
def test_permit_with_has_omnipotence
|
38
38
|
reader = Authorization::Reader::DSLReader.new
|
39
39
|
reader.parse %{
|
40
40
|
authorization do
|
@@ -121,6 +121,26 @@ class AuthorizationTest < Test::Unit::TestCase
|
|
121
121
|
:user => MockUser.new(:test_role, :attr => 1))
|
122
122
|
end
|
123
123
|
|
124
|
+
def test_obligations_with_omnipotence
|
125
|
+
reader = Authorization::Reader::DSLReader.new
|
126
|
+
reader.parse %{
|
127
|
+
authorization do
|
128
|
+
role :admin do
|
129
|
+
has_omnipotence
|
130
|
+
end
|
131
|
+
role :test_role do
|
132
|
+
has_permission_on :permissions, :to => :test do
|
133
|
+
if_attribute :attr => is { user.attr }
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
}
|
138
|
+
engine = Authorization::Engine.new(reader)
|
139
|
+
assert_equal [],
|
140
|
+
engine.obligations(:test, :context => :permissions,
|
141
|
+
:user => MockUser.new(:test_role, :admin, :attr => 1))
|
142
|
+
end
|
143
|
+
|
124
144
|
def test_obligations_with_anded_conditions
|
125
145
|
reader = Authorization::Reader::DSLReader.new
|
126
146
|
reader.parse %{
|
data/test/controller_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
|
4
4
|
class LoadMockObject < MockDataObject
|
@@ -477,4 +477,4 @@ class DeepNameSpacedControllerTest < ActionController::TestCase
|
|
477
477
|
request!(MockUser.new(:prohibited_role), "update", reader)
|
478
478
|
assert !@controller.authorized?
|
479
479
|
end
|
480
|
-
end
|
480
|
+
end
|
data/test/database.yml
ADDED
data/test/dsl_reader_test.rb
CHANGED
data/test/helper_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization helper})
|
3
3
|
|
4
4
|
|
@@ -244,4 +244,4 @@ class HelperTest < ActionController::TestCase
|
|
244
244
|
end
|
245
245
|
assert block_evaled
|
246
246
|
end
|
247
|
-
end
|
247
|
+
end
|
data/test/maintenance_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization maintenance})
|
3
3
|
|
4
4
|
class MaintenanceTest < Test::Unit::TestCase
|
@@ -43,4 +43,4 @@ class MaintenanceTest < Test::Unit::TestCase
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
end
|
46
|
+
end
|
data/test/model_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization in_model})
|
3
3
|
|
4
4
|
ActiveRecord::Base.send :include, Authorization::AuthorizationInModel
|
@@ -26,6 +26,8 @@ class TestModel < ActiveRecord::Base
|
|
26
26
|
:class_name => "TestAttrThrough", :source => :test_attr_throughs,
|
27
27
|
:conditions => "test_attrs.attr = 1"
|
28
28
|
|
29
|
+
attr_accessible :content, :test_attr_through_id, :country_id
|
30
|
+
|
29
31
|
# TODO currently not working in Rails 3
|
30
32
|
if Rails.version < "3"
|
31
33
|
has_and_belongs_to_many :test_attr_throughs_habtm, :join_table => :test_attrs,
|
@@ -73,6 +75,9 @@ class TestAttr < ActiveRecord::Base
|
|
73
75
|
has_many :test_attr_throughs
|
74
76
|
has_many :test_model_security_model_with_finds
|
75
77
|
attr_reader :role_symbols
|
78
|
+
attr_accessible :test_model, :test_another_model, :attr, :branch, :company, :test_attr,
|
79
|
+
:test_a_third_model, :n_way_join_item, :n_way_join_item_id, :test_attr_through_id,
|
80
|
+
:test_model_id, :test_another_model_id
|
76
81
|
def initialize (*args)
|
77
82
|
@role_symbols = []
|
78
83
|
super(*args)
|
@@ -86,6 +91,7 @@ end
|
|
86
91
|
class TestModelSecurityModel < ActiveRecord::Base
|
87
92
|
has_many :test_attrs
|
88
93
|
using_access_control
|
94
|
+
attr_accessible :attr, :attr_2, :test_attrs
|
89
95
|
end
|
90
96
|
class TestModelSecurityModelWithFind < ActiveRecord::Base
|
91
97
|
if Rails.version < "3.2"
|
@@ -97,16 +103,19 @@ class TestModelSecurityModelWithFind < ActiveRecord::Base
|
|
97
103
|
belongs_to :test_attr
|
98
104
|
using_access_control :include_read => true,
|
99
105
|
:context => :test_model_security_models
|
106
|
+
attr_accessible :test_attr, :attr
|
100
107
|
end
|
101
108
|
|
102
109
|
class Branch < ActiveRecord::Base
|
103
110
|
has_many :test_attrs
|
104
111
|
belongs_to :company
|
112
|
+
attr_accessible :name, :company
|
105
113
|
end
|
106
114
|
class Company < ActiveRecord::Base
|
107
115
|
has_many :test_attrs
|
108
116
|
has_many :branches
|
109
117
|
belongs_to :country
|
118
|
+
attr_accessible :name, :country, :country_id
|
110
119
|
end
|
111
120
|
class SmallCompany < Company
|
112
121
|
def self.decl_auth_context
|
@@ -116,6 +125,7 @@ end
|
|
116
125
|
class Country < ActiveRecord::Base
|
117
126
|
has_many :test_models
|
118
127
|
has_many :companies
|
128
|
+
attr_accessible :name
|
119
129
|
end
|
120
130
|
|
121
131
|
class NamedScopeModelTest < Test::Unit::TestCase
|
@@ -1791,6 +1801,7 @@ class ModelTest < Test::Unit::TestCase
|
|
1791
1801
|
test_model = TestModel.create(:content => "content")
|
1792
1802
|
assert engine.permit?(:read, :object => test_model.test_attrs,
|
1793
1803
|
:user => MockUser.new(:test_role))
|
1804
|
+
assert test_model.test_attrs.empty?
|
1794
1805
|
assert !engine.permit?(:read, :object => TestAttr.new,
|
1795
1806
|
:user => MockUser.new(:test_role))
|
1796
1807
|
TestModel.delete_all
|
data/test/test_helper.rb
CHANGED
@@ -1,31 +1,24 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'pathname'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
ENV['RAILS_ENV'] = 'test'
|
5
|
+
|
6
|
+
require 'bundler/setup'
|
7
|
+
begin
|
8
|
+
# rails 3
|
9
|
+
require 'rails/all'
|
10
|
+
rescue LoadError
|
11
|
+
# rails 2.3
|
12
|
+
%w(action_pack action_controller active_record active_support initializer).each {|f| require f}
|
8
13
|
end
|
14
|
+
Bundler.require
|
9
15
|
|
10
|
-
|
11
|
-
|
12
|
-
puts 'Using config/boot.rb'
|
13
|
-
ENV['RAILS_ENV'] = 'test'
|
14
|
-
require File.join(RAILS_ROOT, 'config', 'environment.rb')
|
15
|
-
else
|
16
|
-
# simply use installed gems if available
|
17
|
-
version_requirement = ENV['RAILS_VERSION'] ? "= #{ENV['RAILS_VERSION']}" : "> 2.1.0"
|
18
|
-
puts "Using Rails from RubyGems (#{version_requirement || "default"})"
|
19
|
-
require 'rubygems'
|
20
|
-
%w{actionpack activerecord activesupport rails}.each do |gem_name|
|
21
|
-
gem gem_name, version_requirement
|
22
|
-
end
|
23
|
-
end
|
16
|
+
# rails 2.3 and ruby 1.9.3 fix
|
17
|
+
MissingSourceFile::REGEXPS.push([/^cannot load such file -- (.+)$/i, 1])
|
24
18
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
19
|
+
puts "Testing against rails #{Rails::VERSION::STRING}"
|
20
|
+
|
21
|
+
RAILS_ROOT = File.dirname(__FILE__)
|
29
22
|
|
30
23
|
DA_ROOT = Pathname.new(File.expand_path("..", File.dirname(__FILE__)))
|
31
24
|
|
@@ -114,10 +107,25 @@ class MocksController < ActionController::Base
|
|
114
107
|
end
|
115
108
|
|
116
109
|
if Rails.version < "3"
|
110
|
+
ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'})
|
117
111
|
ActionController::Routing::Routes.draw do |map|
|
118
112
|
map.connect ':controller/:action/:id'
|
119
113
|
end
|
120
114
|
else
|
115
|
+
class TestApp
|
116
|
+
class Application < ::Rails::Application
|
117
|
+
config.active_support.deprecation = :stderr
|
118
|
+
database_path = File.expand_path('../database.yml', __FILE__)
|
119
|
+
if Rails.version.start_with? '3.0.'
|
120
|
+
config.paths.config.database database_path
|
121
|
+
else
|
122
|
+
config.paths['config/database'] = database_path
|
123
|
+
end
|
124
|
+
initialize!
|
125
|
+
end
|
126
|
+
end
|
127
|
+
class ApplicationController < ActionController::Base
|
128
|
+
end
|
121
129
|
#Rails::Application.routes.draw do
|
122
130
|
Rails.application.routes.draw do
|
123
131
|
match '/name/spaced_things(/:action)' => 'name/spaced_things'
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: declarative_authorization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 5
|
8
|
-
-
|
9
|
-
version: 0.5.
|
9
|
+
- 6
|
10
|
+
version: 0.5.6
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Steffen Bartsch
|
@@ -14,8 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2012-
|
18
|
-
default_executable:
|
18
|
+
date: 2012-09-23 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description:
|
@@ -35,43 +35,43 @@ files:
|
|
35
35
|
- authorization_rules.dist.rb
|
36
36
|
- garlic_example.rb
|
37
37
|
- init.rb
|
38
|
-
- app/controllers/authorization_rules_controller.rb
|
39
38
|
- app/controllers/authorization_usages_controller.rb
|
39
|
+
- app/controllers/authorization_rules_controller.rb
|
40
40
|
- app/helpers/authorization_rules_helper.rb
|
41
|
-
- app/views/authorization_usages/index.html.erb
|
42
|
-
- app/views/authorization_rules/index.html.erb
|
43
|
-
- app/views/authorization_rules/_show_graph.erb
|
44
41
|
- app/views/authorization_rules/_change.erb
|
45
|
-
- app/views/authorization_rules/_suggestions.erb
|
46
|
-
- app/views/authorization_rules/graph.dot.erb
|
47
42
|
- app/views/authorization_rules/change.html.erb
|
48
43
|
- app/views/authorization_rules/graph.html.erb
|
44
|
+
- app/views/authorization_rules/_suggestions.erb
|
45
|
+
- app/views/authorization_rules/_show_graph.erb
|
46
|
+
- app/views/authorization_rules/index.html.erb
|
47
|
+
- app/views/authorization_rules/graph.dot.erb
|
48
|
+
- app/views/authorization_usages/index.html.erb
|
49
49
|
- config/routes.rb
|
50
50
|
- lib/declarative_authorization.rb
|
51
|
+
- lib/declarative_authorization/helper.rb
|
51
52
|
- lib/declarative_authorization/in_controller.rb
|
52
|
-
- lib/declarative_authorization/reader.rb
|
53
|
-
- lib/declarative_authorization/rails_legacy.rb
|
54
53
|
- lib/declarative_authorization/obligation_scope.rb
|
55
54
|
- lib/declarative_authorization/railsengine.rb
|
56
|
-
- lib/declarative_authorization/in_model.rb
|
57
|
-
- lib/declarative_authorization/helper.rb
|
58
|
-
- lib/declarative_authorization/development_support/analyzer.rb
|
59
|
-
- lib/declarative_authorization/development_support/change_analyzer.rb
|
60
55
|
- lib/declarative_authorization/development_support/change_supporter.rb
|
56
|
+
- lib/declarative_authorization/development_support/change_analyzer.rb
|
61
57
|
- lib/declarative_authorization/development_support/development_support.rb
|
58
|
+
- lib/declarative_authorization/development_support/analyzer.rb
|
62
59
|
- lib/declarative_authorization/authorization.rb
|
60
|
+
- lib/declarative_authorization/reader.rb
|
63
61
|
- lib/declarative_authorization/maintenance.rb
|
62
|
+
- lib/declarative_authorization/rails_legacy.rb
|
63
|
+
- lib/declarative_authorization/in_model.rb
|
64
64
|
- lib/tasks/authorization_tasks.rake
|
65
|
-
- test/authorization_test.rb
|
66
|
-
- test/schema.sql
|
67
|
-
- test/maintenance_test.rb
|
68
|
-
- test/model_test.rb
|
69
|
-
- test/controller_test.rb
|
70
65
|
- test/helper_test.rb
|
71
66
|
- test/dsl_reader_test.rb
|
72
|
-
- test/
|
67
|
+
- test/model_test.rb
|
68
|
+
- test/controller_test.rb
|
69
|
+
- test/schema.sql
|
73
70
|
- test/test_helper.rb
|
74
|
-
|
71
|
+
- test/database.yml
|
72
|
+
- test/maintenance_test.rb
|
73
|
+
- test/controller_filter_resource_access_test.rb
|
74
|
+
- test/authorization_test.rb
|
75
75
|
homepage: http://github.com/stffn/declarative_authorization
|
76
76
|
licenses: []
|
77
77
|
|
@@ -81,25 +81,29 @@ rdoc_options: []
|
|
81
81
|
require_paths:
|
82
82
|
- lib
|
83
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
84
85
|
requirements:
|
85
86
|
- - ">="
|
86
87
|
- !ruby/object:Gem::Version
|
88
|
+
hash: 59
|
87
89
|
segments:
|
88
90
|
- 1
|
89
91
|
- 8
|
90
92
|
- 6
|
91
93
|
version: 1.8.6
|
92
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
93
96
|
requirements:
|
94
97
|
- - ">="
|
95
98
|
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
96
100
|
segments:
|
97
101
|
- 0
|
98
102
|
version: "0"
|
99
103
|
requirements: []
|
100
104
|
|
101
105
|
rubyforge_project:
|
102
|
-
rubygems_version: 1.
|
106
|
+
rubygems_version: 1.8.15
|
103
107
|
signing_key:
|
104
108
|
specification_version: 3
|
105
109
|
summary: declarative_authorization is a Rails plugin for maintainable authorization based on readable authorization rules.
|