acl9 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
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