cantango 0.9.4.1 → 0.9.4.2

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 (37) hide show
  1. data/README.textile +3 -3
  2. data/VERSION +1 -1
  3. data/cantango.gemspec +2 -2
  4. data/lib/cantango/ability_executor.rb +1 -0
  5. data/lib/cantango/api/user/ability.rb +2 -2
  6. data/lib/cantango/api/user/can.rb +3 -3
  7. data/lib/cantango/api/user/session.rb +0 -5
  8. data/lib/cantango/api/user_account/ability.rb +2 -2
  9. data/lib/cantango/model/scope.rb +0 -1
  10. data/lib/cantango/permit_engine.rb +1 -1
  11. data/lib/cantango/permits/executor.rb +2 -1
  12. data/lib/cantango/permits/permit.rb +1 -1
  13. data/lib/cantango/permits/role_group_permit.rb +3 -2
  14. data/lib/cantango/permits/role_permit.rb +3 -2
  15. data/lib/cantango/users/macros.rb +1 -1
  16. data/lib/cantango/users/user.rb +1 -1
  17. data/lib/generators/cantango/account_permit/templates/account_permit.erb +10 -0
  18. data/lib/generators/cantango/permit_generator.rb +1 -0
  19. data/lib/generators/cantango/role_permit/templates/role_group_permit.erb +10 -0
  20. data/lib/generators/cantango/role_permit/templates/role_permit.erb +10 -0
  21. data/lib/generators/cantango/user_permit/templates/user_permit.erb +10 -0
  22. data/spec/active_record/scenarios/engines/permission_engine/tango_permission_yml_spec.rb +1 -1
  23. data/spec/active_record/scenarios/engines/permit_engine/licenses_spec.rb +3 -3
  24. data/spec/active_record/scenarios/engines/permit_engine/role_groups_permits_spec.rb +3 -3
  25. data/spec/active_record/scenarios/guest_user_admin/admin_user_spec.rb +1 -1
  26. data/spec/active_record/scenarios/guest_user_admin/editor_spec.rb +1 -1
  27. data/spec/active_record/scenarios/guest_user_admin/guest_user_spec.rb +1 -1
  28. data/spec/active_record/scenarios/guest_user_admin/user_having_user_and_editor_roles_spec.rb +1 -1
  29. data/spec/active_record/scenarios/guest_user_admin/user_spec.rb +1 -1
  30. data/spec/active_record/scenarios/masquerading/masquerading_for_admin_account_spec.rb +5 -5
  31. data/spec/active_record/scenarios/masquerading/masquerading_for_admin_user_spec.rb +2 -2
  32. data/spec/cantango/api/user/ability_api_spec.rb +6 -6
  33. data/spec/cantango/api/user/can_api_spec.rb +9 -9
  34. data/spec/cantango/api/user_account/ability_api_spec.rb +1 -1
  35. data/spec/cantango/permits/custom_permit_spec.rb +4 -14
  36. data/spec/integration/performance/helpers/ability_api.rb +3 -4
  37. metadata +33 -33
@@ -35,9 +35,9 @@ Run bundler in a terminal/console from the folder of your Gemfile (root folder o
35
35
 
36
36
  @$ bundle@
37
37
 
38
- h2. Update Nov 3, 2011
38
+ h2. Update Nov 4, 2011
39
39
 
40
- Version 0.9.4.1 has been released with the following featuring and improvements:
40
+ Version 0.9.4.2 has been released with the following features and improvements:
41
41
 
42
42
  * Redesign of Cache and Ability execution
43
43
  * Caching at the individual engine level that can be switched (configured) on/off
@@ -46,7 +46,7 @@ Version 0.9.4.1 has been released with the following featuring and improvements:
46
46
  * Caching for the new User AC engine
47
47
  * Ability to register your own Permit base classes simply by subclassing CanTango::Permit!
48
48
  * This is useful if you want to go beyond the built in types, see the @custom_permit_spec.rb@ for an example
49
- * Some bug fixes
49
+ * Some bug fixes!
50
50
 
51
51
  The :user_ac engine is a port of the Permission system from the _Rails in Action_ book.
52
52
  With this engine a user can have many permissions defined, where each such permission is a persisted Permission model instance that describes a 'can' action on a specific type of object.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.4.1
1
+ 0.9.4.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cantango}
8
- s.version = "0.9.4.1"
8
+ s.version = "0.9.4.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Kristian Mandrup}, %q{Stanislaw Pankevich}]
12
- s.date = %q{2011-11-03}
12
+ s.date = %q{2011-11-04}
13
13
  s.description = %q{Define your permission rules as role- or role group specific permits.
14
14
  Integrates well with multiple Devise user acounts.
15
15
  Includes rules caching.
@@ -6,6 +6,7 @@ module CanTango
6
6
  raise "Candidate must be something!" if !candidate
7
7
  @candidate, @options = [candidate, options]
8
8
  @rules = cached_rules + non_cached_rules
9
+ @rules.flatten!.compact!
9
10
  end
10
11
 
11
12
  def cached_rules
@@ -3,10 +3,10 @@ module CanTango
3
3
  module User
4
4
  module Ability
5
5
  def user_ability user, options = {}
6
- @current_ability ||= create_ability(user, ability_options.merge(options))
6
+ create_ability(user, ability_options.merge(options))
7
7
  end
8
8
 
9
- def current_ability user_type = :user
9
+ def current_user_ability user_type = :user
10
10
  user_ability get_ability_user(user_type)
11
11
  end
12
12
 
@@ -5,17 +5,17 @@ module CanTango
5
5
  include Ability
6
6
  # Example: generated from types of accounts! (see below)
7
7
  # def admin_can?(*args)
8
- # current_ability(:admin).can?(*args)
8
+ # current_user_ability(:admin).can?(*args)
9
9
  # end
10
10
  def self.included(base)
11
11
  ::CanTango.config.users.registered.each do |user|
12
12
  base.class_eval %{
13
13
  def #{user}_can? *args
14
- current_ability(:#{user}).can?(*args)
14
+ current_user_ability(:#{user}).can?(*args)
15
15
  end
16
16
 
17
17
  def #{user}_cannot? *args
18
- current_ability(:#{user}).cannot?(*args)
18
+ current_user_ability(:#{user}).cannot?(*args)
19
19
  end
20
20
  }
21
21
  end
@@ -2,11 +2,6 @@ module CanTango
2
2
  module Api
3
3
  module User
4
4
  module Session
5
- # Example: generated from types of accounts! (see below)
6
- # def admin_can?(*args)
7
- # current_ability(:admin).can?(*args)
8
- # end
9
-
10
5
  def self.included(base)
11
6
  ::CanTango.config.users.registered.each do |user|
12
7
  base.class_eval %{
@@ -3,12 +3,12 @@ module CanTango
3
3
  module UserAccount
4
4
  module Ability
5
5
  def user_account_ability user_account, options = {}
6
- @current_ability ||= create_ability(user_account, ability_options.merge(options))
6
+ @account_ability ||= create_ability(user_account, ability_options.merge(options))
7
7
  end
8
8
  alias_method :account_ability, :user_account_ability
9
9
 
10
10
  def current_account_ability user_type = :user
11
- user_account_ability get_ability_user_account
11
+ user_account_ability get_ability_user_account
12
12
  end
13
13
 
14
14
  protected
@@ -34,7 +34,6 @@ module CanTango::Model
34
34
  protected
35
35
 
36
36
  def check ability
37
- puts ability.rules.inspect
38
37
  clazz.all.select do |obj|
39
38
  actions.all? do |action|
40
39
  ability.send mode_action, action.to_sym, obj
@@ -67,7 +67,7 @@ module CanTango
67
67
  def key_method_names
68
68
  permits.keys.map do |permit|
69
69
  permit_class = CanTango.config.permits.available_permits[permit]
70
- permit_class.hash_key
70
+ permit_class.hash_key if permit_class && permit_class.respond_to?(:hash_key)
71
71
  end.compact
72
72
  end
73
73
  end
@@ -44,7 +44,8 @@ module CanTango
44
44
 
45
45
  def key_method_names
46
46
  permit_class = CanTango.config.permits.available_permits[permit_type]
47
- permit_class.hash_key ? [permit_class.hash_key] : []
47
+ key = permit_class.hash_key if permit_class && permit_class.respond_to?(:hash_key)
48
+ key ? [key] : []
48
49
  end
49
50
  end
50
51
  end
@@ -35,7 +35,7 @@ module CanTango
35
35
  @ability = ability
36
36
  end
37
37
 
38
- def hash_key
38
+ def self.hash_key
39
39
  nil
40
40
  end
41
41
 
@@ -50,13 +50,14 @@ module CanTango
50
50
  in_role_group? subject
51
51
  end
52
52
 
53
- def hash_key
54
- send role_groups_list_meth
53
+ def self.hash_key
54
+ role_groups_list_meth
55
55
  end
56
56
 
57
57
  protected
58
58
 
59
59
  include CanTango::Helpers::RoleMethods
60
+ extend CanTango::Helpers::RoleMethods
60
61
 
61
62
  def in_role_group? subject
62
63
  has_role_group?(subject) || role_groups_of(subject).include?(role)
@@ -49,13 +49,14 @@ module CanTango
49
49
  in_role? subject
50
50
  end
51
51
 
52
- def hash_key
53
- send roles_list_meth
52
+ def self.hash_key
53
+ roles_list_meth
54
54
  end
55
55
 
56
56
  protected
57
57
 
58
58
  include CanTango::Helpers::RoleMethods
59
+ extend CanTango::Helpers::RoleMethods
59
60
 
60
61
  def in_role? subject
61
62
  return subject.send(has_role_meth, role) if subject.respond_to? has_role_meth
@@ -9,7 +9,7 @@ class Module
9
9
  self.send :include, CanTango::Users::UserAccount
10
10
  self.send :include, CanTango::Users::Masquerade if options[:masquerade]
11
11
  end
12
- alias_method :tango_account, :tango_user_account
12
+ alias_method :tango_account, :tango_user_account
13
13
  alias_method :cantango_account, :tango_user_account
14
14
 
15
15
  def masquerader
@@ -23,7 +23,7 @@ module CanTango
23
23
  end
24
24
 
25
25
  def self.included(base)
26
- CanTango.config.users.register base.name.underscore, base
26
+ CanTango.config.users.register base.name.underscore.gsub(/_user$/, ''), base
27
27
  end
28
28
  end
29
29
  end
@@ -10,4 +10,14 @@ class <%= account.to_s.camelize %>AccountPermit < CanTango::AccountPermit
10
10
  <%= permit_logic.strip %>
11
11
  <%= license_logic %>
12
12
  end
13
+
14
+ module Cached
15
+ def permit_rules
16
+ end
17
+ end
18
+
19
+ module NonCached
20
+ def permit_rules
21
+ end
22
+ end
13
23
  end
@@ -42,6 +42,7 @@ module Cantango
42
42
  end
43
43
 
44
44
  def permit_target name
45
+ name = name.to_s.underscore
45
46
  return "#{name}_permit.rb" if is_user?
46
47
  return "#{name}_account_permit.rb" if is_account?
47
48
 
@@ -10,5 +10,15 @@ class <%= permit_name.to_s.camelize %>RoleGroupPermit < CanTango::RoleGroupPermi
10
10
  <%= rules_logic.strip %>
11
11
  <%= license_logic %>
12
12
  end
13
+
14
+ module Cached
15
+ def permit_rules
16
+ end
17
+ end
18
+
19
+ module NonCached
20
+ def permit_rules
21
+ end
22
+ end
13
23
  end
14
24
 
@@ -10,4 +10,14 @@ class <%= permit_name.to_s.camelize %>RolePermit < CanTango::RolePermit
10
10
  <%= rules_logic.strip %>
11
11
  <%= license_logic %>
12
12
  end
13
+
14
+ module Cached
15
+ def permit_rules
16
+ end
17
+ end
18
+
19
+ module NonCached
20
+ def permit_rules
21
+ end
22
+ end
13
23
  end
@@ -10,4 +10,14 @@ class <%= user.to_s.camelize %>Permit < CanTango::UserPermit
10
10
  <%= permit_logic.strip %>
11
11
  <%= license_logic %>
12
12
  end
13
+
14
+ module Cached
15
+ def permit_rules
16
+ end
17
+ end
18
+
19
+ module NonCached
20
+ def permit_rules
21
+ end
22
+ end
13
23
  end
@@ -23,7 +23,7 @@ describe 'Cantango config: permissions.yml' do
23
23
  }
24
24
 
25
25
  let(:current_user) { @user }
26
- let(:ability) { current_ability(:user) }
26
+ let(:ability) { current_user_ability(:user) }
27
27
  let(:own_comment) { Comment.create(:user_id => @user.id) }
28
28
  let(:specific_post) { Post.create(:body => "Nice!") }
29
29
 
@@ -16,12 +16,12 @@ describe 'Licenses usage' do
16
16
  }
17
17
 
18
18
  let(:current_user) { @user }
19
- let(:ability) { current_ability(:user) }
19
+ let(:ability) { current_user_ability(:user) }
20
20
 
21
21
  it "should be allowed to read Song" do
22
22
  ability.should be_allowed_to(:read, Song)
23
23
  end
24
-
24
+
25
25
  it "should be allowed to write Tune" do
26
26
  ability.should be_allowed_to(:write, Tune)
27
27
  end
@@ -29,7 +29,7 @@ describe 'Licenses usage' do
29
29
  it "should be allowed to manage Concerto" do
30
30
  ability.should be_allowed_to(:read, Concerto)
31
31
  end
32
-
32
+
33
33
  it "should be allowed to write Tune" do
34
34
  ability.should_not be_allowed_to(:manage, Improvisation)
35
35
  end
@@ -15,12 +15,12 @@ describe 'RoleGroupPermit usage' do
15
15
  }
16
16
 
17
17
  let(:current_user) { @user }
18
- let(:ability) { current_ability(:user) }
18
+ let(:ability) { current_user_ability(:user) }
19
19
 
20
20
  it "should be allowed to read Song" do
21
21
  ability.should be_allowed_to(:read, Song)
22
22
  end
23
-
23
+
24
24
  it "should be allowed to write Tune" do
25
25
  ability.should be_allowed_to(:write, Tune)
26
26
  end
@@ -28,7 +28,7 @@ describe 'RoleGroupPermit usage' do
28
28
  it "should be allowed to manage Concerto" do
29
29
  ability.should be_allowed_to(:read, Concerto)
30
30
  end
31
-
31
+
32
32
  it "should be allowed to write Tune" do
33
33
  ability.should_not be_allowed_to(:manage, Improvisation)
34
34
  end
@@ -10,7 +10,7 @@ describe 'Scenario: users - :guest, :user, :admin' do
10
10
 
11
11
  it_should_behave_like "Admin role" do
12
12
  let(:current_admin) { @user }
13
- let(:user) { current_ability(:admin) }
13
+ let(:user) { current_user_ability(:admin) }
14
14
  let(:own_article) { Article.create!(:user_id => @user.id) }
15
15
  let(:own_post) { Post.create(:user_id => @user.id) }
16
16
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -10,7 +10,7 @@ describe 'Scenario: users - :guest, :user, :admin' do
10
10
 
11
11
  it_should_behave_like "Editor role" do
12
12
  let(:current_user) { @user }
13
- let(:user) { current_ability(:user) }
13
+ let(:user) { current_user_ability(:user) }
14
14
  let(:own_article) { Article.create!(:user_id => @user.id) }
15
15
  let(:own_post) { Post.create(:user_id => @user.id) }
16
16
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -10,7 +10,7 @@ describe 'Scenario: users - :guest, :user, :admin' do
10
10
 
11
11
  it_should_behave_like "Guest role" do
12
12
  let(:current_guest ) { @guest }
13
- let(:user) { current_ability(:guest) }
13
+ let(:user) { current_user_ability(:guest) }
14
14
  end
15
15
  end
16
16
  end
@@ -10,7 +10,7 @@ describe 'Scenario: users - :guest, :user, :admin' do
10
10
 
11
11
  it_should_behave_like "User + Editor roles" do
12
12
  let(:current_user) { @user }
13
- let(:user) { current_ability(:user) }
13
+ let(:user) { current_user_ability(:user) }
14
14
  let(:own_article) { Article.create!(:user_id => @user.id) }
15
15
  let(:own_post) { Post.create(:user_id => @user.id) }
16
16
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -14,7 +14,7 @@ describe 'Scenario: users - :guest, :user, :admin' do
14
14
 
15
15
  it_should_behave_like "User role" do
16
16
  let(:current_user) { @user }
17
- let(:user) { current_ability(:user) }
17
+ let(:user) { current_user_ability(:user) }
18
18
  let(:own_article) { Article.create!(:user_id => @user.id) }
19
19
  let(:own_post) { Post.create(:user_id => @user.id) }
20
20
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -13,26 +13,26 @@ describe 'Scenario: masquerading for admin account' do
13
13
  before(:each) do
14
14
  admin_account.masquerade_as user_profile
15
15
  end
16
-
16
+
17
17
  it_should_behave_like "User role" do
18
18
  let(:current_admin) { admin_account }
19
- let(:user) { current_ability(:admin) }
19
+ let(:user) { current_user_ability(:admin) }
20
20
  let(:own_article) { Article.create!(:user_id => user_profile.id) }
21
21
  let(:own_post) { Post.create(:user_id => user_profile.id) }
22
22
  let(:own_comment) { Comment.create(:user_id => user_profile.id) }
23
23
  end
24
24
  end
25
-
25
+
26
26
  context "Masquerading as editor" do
27
27
  before(:each) do
28
28
  @user = User.create!(:role => "editor")
29
29
  @admin = Admin.create!(:name => "kris")
30
30
  @admin.masquerade_as @user
31
31
  end
32
-
32
+
33
33
  it_should_behave_like "Editor role" do
34
34
  let(:current_user) { @admin }
35
- let(:user) { current_ability(:user) }
35
+ let(:user) { current_user_ability(:user) }
36
36
  let(:own_article) { Article.create!(:user_id => @user.id) }
37
37
  let(:own_post) { Post.create(:user_id => @user.id) }
38
38
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -13,7 +13,7 @@ describe 'Scenario: masquerading for admin user' do
13
13
 
14
14
  it_should_behave_like "User role" do
15
15
  let(:current_user) { @admin }
16
- let(:user) { current_ability(:user) }
16
+ let(:user) { current_user_ability(:user) }
17
17
  let(:own_article) { Article.create!(:user_id => @user.id) }
18
18
  let(:own_post) { Post.create(:user_id => @user.id) }
19
19
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -29,7 +29,7 @@ describe 'Scenario: masquerading for admin user' do
29
29
 
30
30
  it_should_behave_like "Editor role" do
31
31
  let(:current_user) { @admin }
32
- let(:user) { current_ability(:user) }
32
+ let(:user) { current_user_ability(:user) }
33
33
  let(:own_article) { Article.create!(:user_id => @user.id) }
34
34
  let(:own_post) { Post.create(:user_id => @user.id) }
35
35
  let(:own_comment) { Comment.create(:user_id => @user.id) }
@@ -37,19 +37,19 @@ describe CanTango::Api::User::Ability do
37
37
  specify { subject.user_ability(subject.current_admin).should be_a CanTango::Ability }
38
38
  end
39
39
 
40
- describe 'current_ability :user' do
41
- specify { subject.current_ability(:user).should be_a CanTango::Ability }
40
+ describe 'current_user_ability :user' do
41
+ specify { subject.current_user_ability(:user).should be_a CanTango::Ability }
42
42
 
43
43
  it 'should set the :user user correctly on ability' do
44
- subject.current_ability(:user).user.should == subject.current_user
44
+ subject.current_user_ability(:user).user.should == subject.current_user
45
45
  end
46
46
  end
47
47
 
48
- describe 'current_ability :admin' do
49
- specify { subject.current_ability(:admin).should be_a CanTango::Ability }
48
+ describe 'current_user_ability :admin' do
49
+ specify { subject.current_user_ability(:admin).should be_a CanTango::Ability }
50
50
 
51
51
  it 'should set the :admin user correctly on ability' do
52
- subject.current_ability(:admin).user.should == subject.current_admin
52
+ subject.current_user_ability(:admin).user.should == subject.current_admin
53
53
  end
54
54
  end
55
55
  end
@@ -8,15 +8,15 @@ require 'cantango/api/current_users'
8
8
  class User
9
9
  include CanTango::Users::Masquerade
10
10
  include_and_extend SimpleRoles
11
+
12
+ tango_user
11
13
  end
12
14
 
13
15
  class Admin < User
16
+ tango_user
14
17
  end
15
18
 
16
19
  CanTango.configure do |config|
17
- config.users.register :user, User
18
- config.users.register :admin, Admin
19
-
20
20
  config.cache_engine.set :off
21
21
  config.permit_engine.set :on
22
22
  end
@@ -59,19 +59,19 @@ describe CanTango::Api::User::Can do
59
59
  specify { subject.user_ability(subject.current_admin).should be_a CanTango::Ability }
60
60
  end
61
61
 
62
- describe 'current_ability :user' do
63
- specify { subject.current_ability(:user).should be_a CanTango::Ability }
62
+ describe 'current_user_ability :user' do
63
+ specify { subject.current_user_ability(:user).should be_a CanTango::Ability }
64
64
 
65
65
  it 'should set the :user user correctly on ability' do
66
- subject.current_ability(:user).user.should == subject.current_user
66
+ subject.current_user_ability(:user).user.should == subject.current_user
67
67
  end
68
68
  end
69
69
 
70
- describe 'current_ability :admin' do
71
- specify { subject.current_ability(:admin).should be_a CanTango::Ability }
70
+ describe 'current_user_ability :admin' do
71
+ specify { subject.current_user_ability(:admin).should be_a CanTango::Ability }
72
72
 
73
73
  it 'should set the :admin user correctly on ability' do
74
- subject.current_ability(:admin).user.should == subject.current_admin
74
+ subject.current_user_ability(:admin).user.should == subject.current_admin
75
75
  end
76
76
  end
77
77
 
@@ -29,7 +29,7 @@ describe CanTango::Api::UserAccount::Ability do
29
29
  specify { subject.user_account_ability(subject.current_admin_account).should be_a CanTango::Ability }
30
30
  end
31
31
 
32
- describe 'current_ability' do
32
+ describe 'current_account_ability' do
33
33
  specify { subject.current_account_ability(:user).should be_a CanTango::Ability }
34
34
  specify { subject.current_account_ability(:admin).should be_a CanTango::Ability }
35
35
  end
@@ -9,7 +9,6 @@ require 'cantango/rspec'
9
9
 
10
10
  class MembershipPermit < CanTango::Permit
11
11
  class Builder
12
-
13
12
  end
14
13
 
15
14
  class Finder
@@ -28,6 +27,10 @@ class MembershipPermit < CanTango::Permit
28
27
  clazz.name.demodulize.gsub(/(.*)(MembershipPermit)/, '\1').underscore.to_sym
29
28
  end
30
29
 
30
+ def self.hash_key
31
+ :memberships
32
+ end
33
+
31
34
  def permit_name
32
35
  self.class.membership_name self.class
33
36
  end
@@ -40,19 +43,6 @@ class MembershipPermit < CanTango::Permit
40
43
  super
41
44
  end
42
45
 
43
- # In a specific Role based Permit you can use
44
- # def permit? user, options = {}
45
- # ... permission logic follows
46
- #
47
- # This will call the Permit::Base#permit? instance method (the method below)
48
- # It will only return true if the user matches the role of the Permit class and the
49
- #
50
- # If these confitions are not met, it will return false and thus the outer permit
51
- # will not run the permission logic to follow
52
- #
53
- # Normally super for #permit? should not be called except for this case,
54
- # or if subclassing another Permit than Permit::Base
55
- #
56
46
  def permit?
57
47
  super
58
48
  end
@@ -8,14 +8,13 @@ module CanTango
8
8
  module Ability
9
9
  def user_ability user, options = {}
10
10
  stamper(:call_on_ability) {
11
- @current_ability ||= ::CanTango::Ability.new(user, ability_options.merge(options))
11
+ @user_ability ||= ::CanTango::Ability.new(user, ability_options.merge(options))
12
12
  }
13
- @current_ability
13
+ @user_ability
14
14
  end
15
15
 
16
- def current_ability user_type = :user
16
+ def current_user_ability user_type = :user
17
17
  user_ability get_ability_user(user_type)
18
-
19
18
  end
20
19
 
21
20
  protected
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cantango
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4.1
4
+ version: 0.9.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-03 00:00:00.000000000Z
13
+ date: 2011-11-04 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &70209186980320 !ruby/object:Gem::Requirement
17
+ requirement: &70325622683480 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.0.1
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70209186980320
25
+ version_requirements: *70325622683480
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cancan
28
- requirement: &70209186979560 !ruby/object:Gem::Requirement
28
+ requirement: &70325622682980 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '1.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70209186979560
36
+ version_requirements: *70325622682980
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sugar-high
39
- requirement: &70209186978580 !ruby/object:Gem::Requirement
39
+ requirement: &70325622682480 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.6.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70209186978580
47
+ version_requirements: *70325622682480
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: sweetloader
50
- requirement: &70209186967700 !ruby/object:Gem::Requirement
50
+ requirement: &70325622682000 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.1.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70209186967700
58
+ version_requirements: *70325622682000
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: hashie
61
- requirement: &70209186965280 !ruby/object:Gem::Requirement
61
+ requirement: &70325622681500 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0.4'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70209186965280
69
+ version_requirements: *70325622681500
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec-rails
72
- requirement: &70209186963200 !ruby/object:Gem::Requirement
72
+ requirement: &70325622681020 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 2.6.1
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70209186963200
80
+ version_requirements: *70325622681020
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: forgery
83
- requirement: &70209186962020 !ruby/object:Gem::Requirement
83
+ requirement: &70325622680480 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0.3'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70209186962020
91
+ version_requirements: *70325622680480
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: factory_girl
94
- requirement: &70209186959280 !ruby/object:Gem::Requirement
94
+ requirement: &70325622679760 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70209186959280
102
+ version_requirements: *70325622679760
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: sqlite3
105
- requirement: &70209186956860 !ruby/object:Gem::Requirement
105
+ requirement: &70325622679100 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70209186956860
113
+ version_requirements: *70325622679100
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: sourcify
116
- requirement: &70209186956080 !ruby/object:Gem::Requirement
116
+ requirement: &70325622678340 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *70209186956080
124
+ version_requirements: *70325622678340
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: dkastner-moneta
127
- requirement: &70209186955040 !ruby/object:Gem::Requirement
127
+ requirement: &70325622677860 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ! '>='
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: '1.0'
133
133
  type: :development
134
134
  prerelease: false
135
- version_requirements: *70209186955040
135
+ version_requirements: *70325622677860
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: rspec
138
- requirement: &70209186953320 !ruby/object:Gem::Requirement
138
+ requirement: &70325622677360 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ! '>='
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: 2.4.0
144
144
  type: :development
145
145
  prerelease: false
146
- version_requirements: *70209186953320
146
+ version_requirements: *70325622677360
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: jeweler
149
- requirement: &70209186931540 !ruby/object:Gem::Requirement
149
+ requirement: &70325622670820 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ! '>='
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: 1.6.4
155
155
  type: :development
156
156
  prerelease: false
157
- version_requirements: *70209186931540
157
+ version_requirements: *70325622670820
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: bundler
160
- requirement: &70209186930560 !ruby/object:Gem::Requirement
160
+ requirement: &70325622670340 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ! '>='
@@ -165,10 +165,10 @@ dependencies:
165
165
  version: 1.0.1
166
166
  type: :development
167
167
  prerelease: false
168
- version_requirements: *70209186930560
168
+ version_requirements: *70325622670340
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: rdoc
171
- requirement: &70209186928720 !ruby/object:Gem::Requirement
171
+ requirement: &70325622669860 !ruby/object:Gem::Requirement
172
172
  none: false
173
173
  requirements:
174
174
  - - ! '>='
@@ -176,7 +176,7 @@ dependencies:
176
176
  version: '0'
177
177
  type: :development
178
178
  prerelease: false
179
- version_requirements: *70209186928720
179
+ version_requirements: *70325622669860
180
180
  description: ! 'Define your permission rules as role- or role group specific permits.
181
181
 
182
182
  Integrates well with multiple Devise user acounts.
@@ -872,7 +872,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
872
872
  version: '0'
873
873
  segments:
874
874
  - 0
875
- hash: -2565050033249570748
875
+ hash: -1005748233623511503
876
876
  required_rubygems_version: !ruby/object:Gem::Requirement
877
877
  none: false
878
878
  requirements: