permissive 0.2.7.alpha → 0.2.8.alpha

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7.alpha
1
+ 0.2.8.alpha
@@ -49,7 +49,6 @@ module Permissive
49
49
  permission.save!
50
50
  end
51
51
  permission
52
- # raise 'set'
53
52
  end
54
53
 
55
54
  def can?(*args)
@@ -83,8 +82,9 @@ module Permissive
83
82
  def bits_for(scope, permissions)
84
83
  on = Permissive::PermissionDefinition.normalize_scope(proxy_owner.class, scope)
85
84
  permissions.flatten.map do |permission|
86
- proxy_owner.class.permissions[on].try(:permissions).try(:[], permission.to_s.underscore.gsub('/', '_').to_sym) || raise(Permissive::InvalidPermissionError.new("#{proxy_owner.class.name} does not have a#{'n' if permission.to_s[0, 1].downcase =~ /[aeiou]/} #{permission} permission#{" on #{on}" if on}"))
87
- end
85
+ permission = permission.to_s.underscore.gsub('/', '_').to_sym
86
+ proxy_owner.class.permissions[on].try(:permissions).try(:[], permission) || proxy_owner.class.permissions[:global].try(:permissions).try(:[], permission)# || raise(Permissive::InvalidPermissionError.new("#{proxy_owner.class.name} does not have a#{'n' if permission.to_s[0, 1].downcase =~ /[aeiou]/} #{permission} permission#{" on #{on}" if on}"))
87
+ end.compact
88
88
  end
89
89
  private :bits_for
90
90
  end
@@ -117,7 +117,8 @@ module Permissive
117
117
  scope = :global
118
118
  end
119
119
  permissions = permissions.split('_and_')
120
- if permissions.all? {|permission| self.class.permissions[scope].permissions.has_key?(permission.downcase.to_sym) }
120
+ if permissions.all? {|permission| self.class.permissions[scope].permissions.has_key?(permission.downcase.to_sym) ||
121
+ self.class.permissions[:global].permissions.has_key?(permission.downcase.to_sym) }
121
122
  if revoke
122
123
  class_eval <<-end_eval
123
124
  def #{method}(scope = nil)
@@ -3,8 +3,8 @@ module Permissive
3
3
  class Permission < ActiveRecord::Base
4
4
  belongs_to :permitted_object, :polymorphic => true
5
5
  belongs_to :scoped_object, :polymorphic => true
6
- named_scope :granted, lambda {|permissions|
7
- {:conditions => permissions.map{|bit| "(mask & #{bit}) > 0"}.join(' AND ')}
6
+ named_scope :granted, lambda {|*permissions|
7
+ {:conditions => permissions.flatten.map{|bit| "(mask & #{bit}) > 0"}.join(' AND ')}
8
8
  }
9
9
  named_scope :on, lambda {|scoped_object|
10
10
  case scoped_object
@@ -13,7 +13,6 @@ module Permissive
13
13
  when Class
14
14
  {:conditions => {:scoped_object_id => nil, :scoped_object_type => scoped_object.name}}
15
15
  when String, Symbol
16
- scope =
17
16
  {:conditions => {:scoped_object_id => nil, :scoped_object_type => scoped_object.to_s.classify}}
18
17
  else
19
18
  {:conditions => {:scoped_object_id => nil, :scoped_object_type => nil}}
@@ -23,7 +23,7 @@ module Permissive
23
23
  model_module.pop
24
24
  model_module = model_module.join('::')
25
25
  if (model_module.blank? ? Object : Object.const_get(model_module)).const_defined?(attempted_scope)
26
- [model_module, attempted_scope].join('::')
26
+ [model_module, attempted_scope].reject(&:blank?).join('::')
27
27
  else
28
28
  scope.to_s.classify
29
29
  end
@@ -149,4 +149,4 @@ module Permissive
149
149
  @roles ||= {}
150
150
  end
151
151
  end
152
- end
152
+ end
@@ -12,7 +12,7 @@ describe Permissive, "automatic method creation" do
12
12
  end
13
13
 
14
14
  Permissive::User.has_permissions(:on => :organizations) do
15
- to :punch, 0
15
+ to :manage_games, 0
16
16
  end
17
17
 
18
18
  @user = Permissive::User.create
@@ -27,13 +27,13 @@ describe Permissive, "scoped permissions" do
27
27
  @user.can?(:manage_games, :on => @organization).should be_true
28
28
  end
29
29
 
30
- it "should not respond to generic permissions on scoped permissions" do
31
- @user.can!(:manage_games, :on => @organization)
32
- lambda {
33
- @user.can?(:manage_games).should be_false
34
- }.should raise_error(Permissive::InvalidPermissionError)
35
- @user.can?(:manage_games, :on => @organization).should be_true
36
- end
30
+ # it "should not respond to generic permissions on scoped permissions" do
31
+ # @user.can!(:manage_games, :on => @organization)
32
+ # lambda {
33
+ # @user.can?(:manage_games).should be_false
34
+ # }.should raise_error(Permissive::InvalidPermissionError)
35
+ # @user.can?(:manage_games, :on => @organization).should be_true
36
+ # end
37
37
 
38
38
  it "should revoke the correct permissions through the `revoke' method" do
39
39
  @user.can!(:manage_games, :control_rides, :on => @organization)
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 7
8
+ - 8
9
9
  - alpha
10
- version: 0.2.7.alpha
10
+ version: 0.2.8.alpha
11
11
  platform: ruby
12
12
  authors:
13
13
  - Flip Sasser
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-04-23 00:00:00 -04:00
18
+ date: 2010-05-21 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies: []
21
21