effective_roles 1.0.1 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac65492bdd69398ffcc0d3bd70f76860d3efebf0
4
- data.tar.gz: 1fd2ee624d127650a9a705ef1473884b4f078a9c
3
+ metadata.gz: 411756a3ec04ce4e19ab11eee6446f9ca422f853
4
+ data.tar.gz: f1e95599e802a859d71e905f9776b24d5782389a
5
5
  SHA512:
6
- metadata.gz: ff7c3480eb8fa686685ecfd00b431e3af6b7b19c2edbfdc6469fe540bf05ab0d1ef042082715e51424dd0eb8cc1db76a4b46f09a35de6467d2a9b8088201e712
7
- data.tar.gz: c6dba3645429334945427c99ddccd78b754b1f4373ca2118c585f261cd7d33539e49beca1f4bf60d82f59500deb0f94690f1ed27599ad6f76db7c5eb084d1588
6
+ metadata.gz: 2bc8b3eec999f7a63d8c0b0bcea2121649e564209f794c206a40a617df0164b3404eeda37fa5a0b2a491084b4ab1ad343bd9cf174c8331214b9aaee0d2ed6e2f
7
+ data.tar.gz: b110ef8795df8e32c1b98e69f056902edb41b4aa2581ed846730fd6fcfd50769c7daeb854036f68ccf92100b5d5fea1fa1c295ddb70fe30c70158d28ba688987
@@ -74,11 +74,14 @@ module ActsAsRoleRestricted
74
74
  roles.include?(role.try(:to_sym))
75
75
  end
76
76
 
77
+ # Does self have permission to view obj?
77
78
  def roles_match_with?(obj)
78
- if !obj.respond_to?(:is_role_restricted?) || !obj.is_role_restricted?
79
- true
79
+ if obj.respond_to?(:is_role_restricted?)
80
+ obj.is_role_restricted? == false || (roles & obj.roles).any?
81
+ elsif Integer(obj) > 0
82
+ (roles & EffectiveRoles.roles_for_roles_mask(obj)).any?
80
83
  else
81
- (roles & obj.roles).any?
84
+ raise 'unsupported object passed to roles_permit?(obj). Expecting an acts_as_role_restricted object or a roles_mask integer'
82
85
  end
83
86
  end
84
87
 
@@ -10,6 +10,11 @@ module EffectiveRoles
10
10
  yield self
11
11
  end
12
12
 
13
+ def self.roles_for_roles_mask(roles_mask)
14
+ roles_mask = Integer(roles_mask)
15
+ EffectiveRoles.roles.reject { |r| (roles_mask & 2**EffectiveRoles.roles.index(r)).zero? }
16
+ end
17
+
13
18
  def self.roles_collection(obj = nil, user = nil)
14
19
  raise ArgumentError.new('EffectiveRoles config.role_descriptions must be a Hash. The Array syntax is deprecated.') unless EffectiveRoles.role_descriptions.kind_of?(Hash)
15
20
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveRoles
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_roles
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-08 00:00:00.000000000 Z
11
+ date: 2015-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails