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.
|
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
|
-
|
87
|
-
|
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 {
|
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
|
@@ -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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
-
-
|
8
|
+
- 8
|
9
9
|
- alpha
|
10
|
-
version: 0.2.
|
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-
|
18
|
+
date: 2010-05-21 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|