acl9 0.12.0 → 0.12.1

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/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.sqlite3
2
+ *.html
3
+ pkg
4
+ *.sw?
5
+ *.log
6
+ .yardoc
7
+ doc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in csvision.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,47 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ acl9 (0.12.0)
5
+ rails (= 2.3.12)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ actionmailer (2.3.12)
11
+ actionpack (= 2.3.12)
12
+ actionpack (2.3.12)
13
+ activesupport (= 2.3.12)
14
+ rack (~> 1.1.0)
15
+ activerecord (2.3.12)
16
+ activesupport (= 2.3.12)
17
+ activeresource (2.3.12)
18
+ activesupport (= 2.3.12)
19
+ activesupport (2.3.12)
20
+ ansi (1.3.0)
21
+ be9-context (0.5.5)
22
+ jnunemaker-matchy (0.4.0)
23
+ rack (1.1.3)
24
+ rails (2.3.12)
25
+ actionmailer (= 2.3.12)
26
+ actionpack (= 2.3.12)
27
+ activerecord (= 2.3.12)
28
+ activeresource (= 2.3.12)
29
+ activesupport (= 2.3.12)
30
+ rake (>= 0.8.3)
31
+ rake (0.9.2.2)
32
+ sqlite3 (1.3.5)
33
+ turn (0.8.3)
34
+ ansi
35
+ yard (0.7.5)
36
+
37
+ PLATFORMS
38
+ ruby
39
+
40
+ DEPENDENCIES
41
+ acl9!
42
+ be9-context (>= 0.5.5)
43
+ jnunemaker-matchy (>= 0.4.0)
44
+ rake
45
+ sqlite3
46
+ turn
47
+ yard
data/README.textile CHANGED
@@ -53,6 +53,8 @@ h1. Installation
53
53
 
54
54
  Acl9 can be installed as a gem from "gemcutter":http://gemcutter.org.
55
55
 
56
+ h2. in Rails 2.3
57
+
56
58
  Add the following line to your @config/environment.rb@:
57
59
 
58
60
  <pre><code>
@@ -67,6 +69,22 @@ Alternatively you can install Acl9 as a plugin:
67
69
  script/plugin install git://github.com/be9/acl9.git
68
70
  </pre></code>
69
71
 
72
+ h2. in Rails 3.0
73
+
74
+ Add the following line to your @Gemfile@:
75
+
76
+ <pre><code>
77
+ gem "acl9"
78
+ </pre></code>
79
+
80
+ Then run @bundle install@ and you're done!
81
+
82
+ Alternatively you can install Acl9 as a plugin:
83
+
84
+ <pre><code>
85
+ rails plugin install git://github.com/be9/acl9.git
86
+ </pre></code>
87
+
70
88
  h1. Basics
71
89
 
72
90
  h2. Authorization is not authentication!
@@ -158,7 +176,7 @@ h2. Subject model
158
176
 
159
177
  <pre><code>
160
178
  class User < ActiveRecord::Base
161
- acts_as_authorization_subject
179
+ acts_as_authorization_subject :association_name => :roles
162
180
  end
163
181
  </code></pre>
164
182
 
data/Rakefile CHANGED
@@ -1,40 +1,18 @@
1
- require 'rubygems'
1
+ #!/usr/bin/env rake
2
+ require 'bundler/gem_tasks'
2
3
  require 'rake'
3
4
  require 'rake/testtask'
5
+ require 'yard'
4
6
 
5
7
  desc 'Default: run tests.'
6
8
  task :default => :test
7
9
 
8
- begin
9
- require 'jeweler'
10
- Jeweler::Tasks.new do |s|
11
- s.name = "acl9"
12
- s.summary = "Yet another role-based authorization system for Rails"
13
- s.email = "olegdashevskii@gmail.com"
14
- s.homepage = "http://github.com/be9/acl9"
15
- s.description = "Role-based authorization system for Rails with a nice DSL for access control lists"
16
- s.authors = ["oleg dashevskii"]
17
- s.files = FileList["[A-Z]*", "{lib,test}/**/*.rb"]
18
- s.add_development_dependency "jeremymcanally-context", ">= 0.5.5"
19
- s.add_development_dependency "jnunemaker-matchy", ">= 0.4.0"
20
- end
21
- Jeweler::GemcutterTasks.new
22
- rescue LoadError
23
- puts "Jeweler not available. Install it with: sudo gem install jeweler"
24
- end
25
-
26
10
  Rake::TestTask.new(:test) do |test|
27
11
  test.libs << 'lib' << 'test'
28
12
  test.pattern = 'test/**/*_test.rb'
29
13
  test.verbose = false
30
14
  end
31
15
 
32
- begin
33
- require 'yard'
34
-
35
- YARD::Rake::YardocTask.new do |t|
36
- t.files = ['lib/**/*.rb']
37
- #t.options = ['--any', '--extra', '--opts'] # optional
38
- end
39
- rescue LoadError
16
+ YARD::Rake::YardocTask.new do |t|
17
+ t.files = ['lib/**/*.rb']
40
18
  end
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :build:
3
3
  :minor: 12
4
- :patch: 0
4
+ :patch: 1
5
5
  :major: 0
data/acl9.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.expand_path("../lib", __FILE__)
3
+ require "acl9/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.authors = ["oleg dashevskii"]
7
+ s.email = ["olegdashevskii@gmail.com"]
8
+ s.description = %q{Role-based authorization system for Rails with a nice DSL for access control lists}
9
+ s.summary = %q{Yet another role-based authorization system for Rails}
10
+ s.homepage = "http://github.com/be9/acl9"
11
+
12
+ s.files = `git ls-files`.split($\)
13
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
15
+ s.name = "acl9"
16
+ s.require_paths = ["lib"]
17
+ s.version = Acl9::VERSION
18
+
19
+ s.date = %q{2010-11-02}
20
+ s.extra_rdoc_files = %w/README.textile TODO/
21
+ s.rdoc_options = ["--charset=UTF-8"]
22
+
23
+ s.add_dependency "rails", ">= 2.3.12"
24
+
25
+ s.add_development_dependency "be9-context", ">= 0.5.5"
26
+ s.add_development_dependency "jnunemaker-matchy", ">= 0.4.0"
27
+ s.add_development_dependency "rake"
28
+ s.add_development_dependency "yard"
29
+ s.add_development_dependency 'sqlite3'
30
+ s.add_development_dependency 'turn'
31
+ end
32
+
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'acl9'
@@ -5,10 +5,8 @@ module Acl9
5
5
 
6
6
  def initialize(*args)
7
7
  @default_action = nil
8
-
9
8
  @allows = []
10
- @denys = []
11
-
9
+ @denys = []
12
10
  @original_args = args
13
11
  end
14
12
 
@@ -17,21 +15,12 @@ module Acl9
17
15
  end
18
16
 
19
17
  def default_action
20
- if @default_action.nil? then :deny else @default_action end
18
+ @default_action.nil? ? :deny : @default_action
21
19
  end
22
20
 
23
21
  def allowance_expression
24
- allowed_expr = if @allows.size > 0
25
- @allows.map { |clause| "(#{clause})" }.join(' || ')
26
- else
27
- "false"
28
- end
29
-
30
- not_denied_expr = if @denys.size > 0
31
- @denys.map { |clause| "!(#{clause})" }.join(' && ')
32
- else
33
- "true"
34
- end
22
+ allowed_expr = @allows.any? ? @allows.map { |clause| "(#{clause})" }.join(' || ') : 'false'
23
+ not_denied_expr = @denys.any? ? @denys.map { |clause| "!(#{clause})" }.join(' && ') : 'true'
35
24
 
36
25
  [allowed_expr, not_denied_expr].
37
26
  map { |expr| "(#{expr})" }.
@@ -82,12 +71,8 @@ module Acl9
82
71
  end
83
72
 
84
73
  subsidiary.acl_block!(&block)
85
-
86
74
  action_check = _action_check_expression(args)
87
-
88
- squash = lambda do |rules|
89
- _either_of(rules) + ' && ' + action_check
90
- end
75
+ squash = lambda { |rules| action_check + ' && ' + _either_of(rules) }
91
76
 
92
77
  @allows << squash.call(subsidiary.allows) if subsidiary.allows.size > 0
93
78
  @denys << squash.call(subsidiary.denys) if subsidiary.denys.size > 0
@@ -112,9 +97,9 @@ module Acl9
112
97
 
113
98
  role_checks = args.map do |who|
114
99
  case who
115
- when anonymous() then "#{_subject_ref}.nil?"
116
- when logged_in() then "!#{_subject_ref}.nil?"
117
- when all() then "true"
100
+ when anonymous then "#{_subject_ref}.nil?"
101
+ when logged_in then "!#{_subject_ref}.nil?"
102
+ when all then "true"
118
103
  else
119
104
  "!#{_subject_ref}.nil? && #{_subject_ref}.has_role?('#{who.to_s.singularize}', #{object})"
120
105
  end
@@ -156,18 +141,12 @@ module Acl9
156
141
  def _set_action_clause(to, except)
157
142
  raise ArgumentError, "both :to and :except cannot be specified in the rule" if to && except
158
143
 
159
- @action_clause = nil
160
-
161
- action_list = to || except
144
+ @action_clause = nil
145
+ action_list = to || except
162
146
  return unless action_list
163
147
 
164
148
  expr = _action_check_expression(action_list)
165
-
166
- @action_clause = if to
167
- "#{expr}"
168
- else
169
- "!#{expr}"
170
- end
149
+ @action_clause = to ? "#{expr}" : "!#{expr}"
171
150
  end
172
151
 
173
152
  def _action_check_expression(action_list)
@@ -199,12 +178,9 @@ module Acl9
199
178
  end
200
179
 
201
180
  case object
202
- when Class
203
- object.to_s
204
- when Symbol
205
- _object_ref object
206
- when nil
207
- "nil"
181
+ when Class then object.to_s
182
+ when Symbol then _object_ref object
183
+ when nil then "nil"
208
184
  else
209
185
  raise ArgumentError, "object specified by preposition can only be a Class or a Symbol"
210
186
  end
data/lib/acl9/helpers.rb CHANGED
@@ -19,13 +19,13 @@ module Acl9
19
19
 
20
20
  # Usage:
21
21
  #
22
- # <% show_to(:owner, :supervisor, :of => :account) do -%>
22
+ # <%=show_to(:owner, :supervisor, :of => :account) do %>
23
23
  # <%= 'hello' %>
24
- # <%- end -%>
24
+ # <% end %>
25
25
  #
26
26
  def show_to(*args, &block)
27
- user = eval(Acl9.config[:default_subject_method].to_s)
28
- return '' if user.nil?
27
+ user = send(Acl9.config[:default_subject_method])
28
+ return if user.nil?
29
29
 
30
30
  has_any = false
31
31
 
@@ -36,7 +36,14 @@ module Acl9
36
36
  has_any = args.detect { |role| user.has_role?(role) }
37
37
  end
38
38
 
39
- has_any ? yield(:block) : ''
39
+ if has_any
40
+ begin
41
+ capture( &block )
42
+ rescue NoMethodError
43
+ yield( :block )
44
+ end
45
+ end
46
+
40
47
  end
41
48
  end
42
49
  end
@@ -10,7 +10,10 @@ module Acl9
10
10
  # @param [Subject] subject Subject to add role for
11
11
  # @see Acl9::ModelExtensions::Subject#has_role?
12
12
  def accepts_role?(role_name, subject)
13
- subject.has_role? role_name, self
13
+ if not subject.nil?
14
+ return subject.has_role? role_name, self
15
+ end
16
+ false
14
17
  end
15
18
 
16
19
  ##
@@ -20,7 +23,10 @@ module Acl9
20
23
  # @param [Subject] subject Subject to add role for
21
24
  # @see Acl9::ModelExtensions::Subject#has_role!
22
25
  def accepts_role!(role_name, subject)
23
- subject.has_role! role_name, self
26
+ if not subject.nil?
27
+ return subject.has_role! role_name, self
28
+ end
29
+ false
24
30
  end
25
31
 
26
32
  ##
@@ -30,7 +36,10 @@ module Acl9
30
36
  # @param [Subject] subject Subject to remove role from
31
37
  # @see Acl9::ModelExtensions::Subject#has_no_role!
32
38
  def accepts_no_role!(role_name, subject)
33
- subject.has_no_role! role_name, self
39
+ if not subject.nil?
40
+ return subject.has_no_role! role_name, self
41
+ end
42
+ false
34
43
  end
35
44
 
36
45
  ##
@@ -40,7 +49,10 @@ module Acl9
40
49
  # @return [Boolean] Returns true if +subject+ has any roles on this object.
41
50
  # @see Acl9::ModelExtensions::Subject#has_roles_for?
42
51
  def accepts_roles_by?(subject)
43
- subject.has_roles_for? self
52
+ if not subject.nil?
53
+ return subject.has_roles_for? self
54
+ end
55
+ false
44
56
  end
45
57
 
46
58
  alias :accepts_role_by? :accepts_roles_by?
@@ -52,7 +64,10 @@ module Acl9
52
64
  # @param [Subject] subject Subject to query roles
53
65
  # @see Acl9::ModelExtensions::Subject#roles_for
54
66
  def accepted_roles_by(subject)
55
- subject.roles_for self
67
+ if not subject.nil?
68
+ return subject.roles_for self
69
+ end
70
+ false
56
71
  end
57
72
  end
58
73
  end
@@ -17,7 +17,7 @@ module Acl9
17
17
  #
18
18
  # In this case manager is anyone who "manages" at least one object.
19
19
  #
20
- # However, if protect_global_roles option set to +true+, you'll need to
20
+ # However, if protect_global_roles option set to +true+, you'll need to
21
21
  # explicitly grant global role with same name.
22
22
  #
23
23
  # Acl9.config[:protect_global_roles] = true
@@ -26,7 +26,7 @@ module Acl9
26
26
  # user.has_role!(:manager)
27
27
  # user.has_role?(:manager) # => true
28
28
  #
29
- # protect_global_roles option is +false+ by default as for now, but this
29
+ # protect_global_roles option is +false+ by default as for now, but this
30
30
  # may change in future!
31
31
  #
32
32
  # @return [Boolean] Whether +self+ has a role +role_name+ on +object+.
@@ -134,7 +134,8 @@ module Acl9
134
134
  lambda { |role| role.authorizable.nil? }
135
135
  else
136
136
  lambda do |role|
137
- role.authorizable_type == object.class.base_class.to_s && role.authorizable == object
137
+ auth_id = role.authorizable_id.kind_of?(String) ? object.id.to_s : object.id
138
+ role.authorizable_type == object.class.base_class.to_s && role.authorizable_id == auth_id
138
139
  end
139
140
  end
140
141
  end
@@ -154,31 +155,31 @@ module Acl9
154
155
  ]
155
156
  end
156
157
 
157
- self._auth_role_class.first :conditions => cond
158
+ self._auth_role_class.where(cond).first
158
159
  end
159
160
 
160
161
  def delete_role(role)
161
162
  if role
162
163
  self.role_objects.delete role
163
-
164
- role.destroy if role.send(self._auth_subject_class_name.demodulize.tableize).empty?
164
+ if role.send(self._auth_subject_class_name.demodulize.tableize).empty?
165
+ role.destroy unless role.respond_to?(:system?) && role.system?
166
+ end
165
167
  end
166
168
  end
167
-
169
+
168
170
  protected
169
171
 
170
172
  def _auth_role_class
171
173
  self.class._auth_role_class_name.constantize
172
174
  end
173
-
175
+
174
176
  def _auth_role_assoc
175
- self.class._auth_role_assoc_name
177
+ self.class._auth_role_assoc_name
176
178
  end
177
179
 
178
180
  def role_objects
179
- send(self._auth_role_assoc)
181
+ send(self._auth_role_assoc)
180
182
  end
181
-
182
183
  end
183
184
  end
184
185
  end
@@ -33,10 +33,9 @@ module Acl9
33
33
  # @see Acl9::ModelExtensions::Subject
34
34
  #
35
35
  def acts_as_authorization_subject(options = {})
36
- assoc = options[:association_name] || Acl9::config[:default_association_name]
36
+ assoc = options[:association_name] || Acl9::config[:default_association_name]
37
37
  role = options[:role_class_name] || Acl9::config[:default_role_class_name]
38
- join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] ||
39
- join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(role))
38
+ join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] || self.table_name_prefix + [undecorated_table_name(self.to_s), undecorated_table_name(role)].sort.join("_") + self.table_name_suffix
40
39
 
41
40
  has_and_belongs_to_many assoc, :class_name => role, :join_table => join_table
42
41
 
@@ -79,22 +78,27 @@ module Acl9
79
78
  role = options[:role_class_name] || Acl9::config[:default_role_class_name]
80
79
  role_table = role.constantize.table_name
81
80
 
82
- sql_tables = <<-EOS
83
- FROM #{subj_table}
84
- INNER JOIN #{role_table}_#{subj_table} ON #{subj_col}_id = #{subj_table}.id
85
- INNER JOIN #{role_table} ON #{role_table}.id = #{role.underscore}_id
86
- EOS
87
-
88
- sql_where = <<-'EOS'
89
- WHERE authorizable_type = '#{self.class.base_class.to_s}'
90
- AND authorizable_id = #{column_for_attribute(self.class.primary_key).text? ? "'#{id}'": id}
91
- EOS
81
+ join_table = options[:join_table_name]
82
+ join_table ||= ActiveRecord::Base.send(:join_table_name,
83
+ role_table, subj_table) if ActiveRecord::Base.private_methods \
84
+ .include?('join_table_name')
85
+ join_table ||= Acl9::config[:default_join_table_name]
86
+ join_table ||= self.table_name_prefix \
87
+ + [undecorated_table_name(self.to_s),
88
+ undecorated_table_name(role)].sort.join("_") \
89
+ + self.table_name_suffix
92
90
 
93
91
  has_many :accepted_roles, :as => :authorizable, :class_name => role, :dependent => :destroy
94
92
 
95
93
  has_many :"#{subj_table}",
96
- :finder_sql => ("SELECT DISTINCT #{subj_table}.*" + sql_tables + sql_where),
97
- :counter_sql => ("SELECT COUNT(DISTINCT #{subj_table}.id)" + sql_tables + sql_where),
94
+ :finder_sql => proc { "SELECT DISTINCT #{subj_table}.* " +
95
+ "FROM #{subj_table} INNER JOIN #{join_table} ON #{subj_col}_id = #{subj_table}.id " +
96
+ "INNER JOIN #{role_table} ON #{role_table}.id = #{role.underscore}_id " +
97
+ "WHERE authorizable_type = '#{self.class.base_class.to_s}' AND authorizable_id = #{id} "},
98
+ :counter_sql => proc { "SELECT COUNT(DISTINCT #{subj_table}.id)" +
99
+ "FROM #{subj_table} INNER JOIN #{join_table} ON #{subj_col}_id = #{subj_table}.id " +
100
+ "INNER JOIN #{role_table} ON #{role_table}.id = #{role.underscore}_id " +
101
+ "WHERE authorizable_type = '#{self.class.base_class.to_s}' AND authorizable_id = #{id} "},
98
102
  :readonly => true
99
103
 
100
104
  include Acl9::ModelExtensions::ForObject
@@ -126,7 +130,9 @@ module Acl9
126
130
  def acts_as_authorization_role(options = {})
127
131
  subject = options[:subject_class_name] || Acl9::config[:default_subject_class_name]
128
132
  join_table = options[:join_table_name] || Acl9::config[:default_join_table_name] ||
129
- join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(subject))
133
+ self.table_name_prefix + [undecorated_table_name(self.to_s), undecorated_table_name(subject)].sort.join("_") + self.table_name_suffix
134
+ # comment out use deprecated API
135
+ #join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(subject))
130
136
 
131
137
  has_and_belongs_to_many subject.demodulize.tableize.to_sym,
132
138
  :class_name => subject,
@@ -0,0 +1,3 @@
1
+ module Acl9
2
+ VERSION = "0.12.1"
3
+ end
data/lib/acl9.rb CHANGED
@@ -1,16 +1,20 @@
1
- require File.join(File.dirname(__FILE__), 'acl9', 'config')
1
+ require 'acl9/version'
2
+ require 'acl9/model_extensions'
3
+ require 'acl9/controller_extensions'
4
+ require 'acl9/helpers'
2
5
 
3
- if defined? ActiveRecord::Base
4
- require File.join(File.dirname(__FILE__), 'acl9', 'model_extensions')
6
+ module Acl9
7
+ @@config = {
8
+ :default_role_class_name => 'Role',
9
+ :default_subject_class_name => 'User',
10
+ :default_subject_method => :current_user,
11
+ :default_association_name => :role_objects,
12
+ :protect_global_roles => false,
13
+ }
5
14
 
6
- ActiveRecord::Base.send(:include, Acl9::ModelExtensions)
15
+ mattr_reader :config
7
16
  end
8
17
 
9
-
10
- if defined? ActionController::Base
11
- require File.join(File.dirname(__FILE__), 'acl9', 'controller_extensions')
12
- require File.join(File.dirname(__FILE__), 'acl9', 'helpers')
13
-
14
- ActionController::Base.send(:include, Acl9::ControllerExtensions)
15
- Acl9Helpers = Acl9::Helpers unless defined?(Acl9Helpers)
16
- end
18
+ ActiveRecord::Base.send(:include, Acl9::ModelExtensions)
19
+ ActionController::Base.send(:include, Acl9::ControllerExtensions)
20
+ Acl9Helpers = Acl9::Helpers unless defined?(Acl9Helpers)
data/test/helpers_test.rb CHANGED
@@ -121,14 +121,13 @@ class HelperTest < Test::Unit::TestCase
121
121
  obj = Object.new
122
122
  def obj.name; 'persia'; end
123
123
 
124
- k.show_to('hamlet', :of => obj) { 'hello my prince' }.should == ''
124
+ k.show_to('hamlet', :of => obj) { 'hello my prince' }.should == nil
125
125
  end
126
126
 
127
127
  it "has :show_to nothing to NotLoggedIn" do
128
128
  k = Klass2.new
129
129
  k.action_name = 'be'
130
130
  message = 'hello hamlet'
131
- k.show_to(:hamlet) { message }.should == ''
131
+ k.show_to(:hamlet) { message }.should == nil
132
132
  end
133
-
134
133
  end
data/test/roles_test.rb CHANGED
@@ -5,6 +5,21 @@ require 'support/models'
5
5
  #Logger = ActiveRecord::Base.logger
6
6
  load 'support/schema.rb'
7
7
 
8
+
9
+ class SystemRolesTest < Test::Unit::TestCase
10
+ it "should not delete a system role" do
11
+ Role.destroy_all
12
+ @role=Role.create(:name=>"admin", :system=>true)
13
+ @role.system.should be_true
14
+ Role.count.should==1
15
+ @user = User.create!
16
+ @user.has_role!(:admin)
17
+ Role.count.should==1
18
+ @user.has_no_role!(:admin)
19
+ Role.count.should==1
20
+ end
21
+ end
22
+
8
23
  class RolesTest < Test::Unit::TestCase
9
24
  before do
10
25
  Role.destroy_all
@@ -269,6 +284,7 @@ class RolesTest < Test::Unit::TestCase
269
284
  end
270
285
  end
271
286
 
287
+
272
288
  class RolesWithCustomClassNamesTest < Test::Unit::TestCase
273
289
  before do
274
290
  AnotherRole.destroy_all
@@ -352,4 +368,3 @@ class UsersRolesAndSubjectsWithNamespacedClassNamesTest < Test::Unit::TestCase
352
368
  @user2.has_no_roles!
353
369
  end
354
370
  end
355
-
@@ -1,6 +1,7 @@
1
1
  ActiveRecord::Schema.define(:version => 0) do
2
2
  create_table "roles", :force => true do |t|
3
3
  t.string "name", :limit => 40
4
+ t.boolean "system", :default=>false
4
5
  t.string "authorizable_type", :limit => 40
5
6
  t.string "authorizable_id"
6
7
  t.datetime "created_at"
data/test/test_helper.rb CHANGED
@@ -1,8 +1,5 @@
1
1
  require 'rubygems'
2
-
3
- gem 'jnunemaker-matchy', '>= 0.4.0'
4
- gem 'jeremymcanally-context', '>= 0.5.5'
5
-
2
+ require 'bundler/setup'
6
3
  require 'test/unit'
7
4
  require 'context'
8
5
  require 'matchy'
@@ -10,8 +7,9 @@ require 'active_support'
10
7
  require 'active_record'
11
8
  require 'action_controller'
12
9
  require 'action_controller/test_process'
10
+ require 'turn'
13
11
 
14
- ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :dbfile => 'test.sqlite3')
12
+ ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => 'test.sqlite3')
15
13
 
16
14
  class Test::Unit::TestCase
17
15
  custom_matcher :be_false do |receiver, matcher, args|
@@ -29,3 +27,4 @@ end
29
27
 
30
28
  ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
31
29
  ActionController::Base.logger = ActiveRecord::Base.logger
30
+ ActiveRecord::Base.silence { ActiveRecord::Migration.verbose = false }
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class VersionTest < Test::Unit::TestCase
4
+ it "Should have a version" do
5
+ assert defined? Acl9::VERSION
6
+ end
7
+ end
metadata CHANGED
@@ -1,55 +1,115 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: acl9
3
- version: !ruby/object:Gem::Version
4
- version: 0.12.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.12.1
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - oleg dashevskii
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2010-01-04 00:00:00 +06:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: jeremymcanally-context
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
12
+ date: 2010-11-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &25259300 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.3.12
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *25259300
25
+ - !ruby/object:Gem::Dependency
26
+ name: be9-context
27
+ requirement: &25258440 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
23
32
  version: 0.5.5
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: jnunemaker-matchy
27
33
  type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
34
+ prerelease: false
35
+ version_requirements: *25258440
36
+ - !ruby/object:Gem::Dependency
37
+ name: jnunemaker-matchy
38
+ requirement: &25257700 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
33
43
  version: 0.4.0
34
- version:
35
- description: Role-based authorization system for Rails with a nice DSL for access control lists
36
- email: olegdashevskii@gmail.com
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *25257700
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &25257060 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *25257060
58
+ - !ruby/object:Gem::Dependency
59
+ name: yard
60
+ requirement: &25256200 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *25256200
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: &25255240 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *25255240
80
+ - !ruby/object:Gem::Dependency
81
+ name: turn
82
+ requirement: &25254560 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *25254560
91
+ description: Role-based authorization system for Rails with a nice DSL for access
92
+ control lists
93
+ email:
94
+ - olegdashevskii@gmail.com
37
95
  executables: []
38
-
39
96
  extensions: []
40
-
41
- extra_rdoc_files:
97
+ extra_rdoc_files:
42
98
  - README.textile
43
99
  - TODO
44
- files:
100
+ files:
101
+ - .gitignore
45
102
  - CHANGELOG.textile
103
+ - Gemfile
104
+ - Gemfile.lock
46
105
  - MIT-LICENSE
47
106
  - README.textile
48
107
  - Rakefile
49
108
  - TODO
50
109
  - VERSION.yml
110
+ - acl9.gemspec
111
+ - init.rb
51
112
  - lib/acl9.rb
52
- - lib/acl9/config.rb
53
113
  - lib/acl9/controller_extensions.rb
54
114
  - lib/acl9/controller_extensions/dsl_base.rb
55
115
  - lib/acl9/controller_extensions/generators.rb
@@ -57,6 +117,7 @@ files:
57
117
  - lib/acl9/model_extensions.rb
58
118
  - lib/acl9/model_extensions/for_object.rb
59
119
  - lib/acl9/model_extensions/for_subject.rb
120
+ - lib/acl9/version.rb
60
121
  - test/access_control_test.rb
61
122
  - test/dsl_base_test.rb
62
123
  - test/helpers_test.rb
@@ -65,40 +126,40 @@ files:
65
126
  - test/support/models.rb
66
127
  - test/support/schema.rb
67
128
  - test/test_helper.rb
68
- has_rdoc: true
129
+ - test/version_test.rb
69
130
  homepage: http://github.com/be9/acl9
70
131
  licenses: []
71
-
72
132
  post_install_message:
73
- rdoc_options:
133
+ rdoc_options:
74
134
  - --charset=UTF-8
75
- require_paths:
135
+ require_paths:
76
136
  - lib
77
- required_ruby_version: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: "0"
82
- version:
83
- required_rubygems_version: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- version: "0"
88
- version:
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
89
149
  requirements: []
90
-
91
150
  rubyforge_project:
92
- rubygems_version: 1.3.5
151
+ rubygems_version: 1.8.11
93
152
  signing_key:
94
153
  specification_version: 3
95
154
  summary: Yet another role-based authorization system for Rails
96
- test_files:
155
+ test_files:
156
+ - test/access_control_test.rb
157
+ - test/dsl_base_test.rb
97
158
  - test/helpers_test.rb
98
- - test/support/schema.rb
99
- - test/support/models.rb
159
+ - test/roles_test.rb
100
160
  - test/support/controllers.rb
101
- - test/dsl_base_test.rb
102
- - test/access_control_test.rb
161
+ - test/support/models.rb
162
+ - test/support/schema.rb
103
163
  - test/test_helper.rb
104
- - test/roles_test.rb
164
+ - test/version_test.rb
165
+ has_rdoc:
data/lib/acl9/config.rb DELETED
@@ -1,11 +0,0 @@
1
- module Acl9
2
- @@config = {
3
- :default_role_class_name => 'Role',
4
- :default_subject_class_name => 'User',
5
- :default_subject_method => :current_user,
6
- :default_association_name => :role_objects,
7
- :protect_global_roles => false,
8
- }
9
-
10
- mattr_reader :config
11
- end