effective_roles 2.6.0 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43ff04eb475329ae2001305352cb8131942fd2f598a5273868720aeede0ca553
4
- data.tar.gz: 100d76c0b230bd759fbc222714de32f443e42e5ef21dc00495bd7e4c1a4ad684
3
+ metadata.gz: 8c1f1f6b5dd1700dcaa93ac9b8f57ffbdd20a131be00bded8702b5f07fa65f30
4
+ data.tar.gz: c1e9fca0b2f63631519bd7a2f3cae7c5ff8ca3bb51e867a163f4f8830f511190
5
5
  SHA512:
6
- metadata.gz: 54b6b93166130c94368c9d39505d24181d66ec7b8c63dd5c0a2488672ef9fbab7e00658558c45e99d49d58cfdef6bc4c7f5918129af4a90cd5ce7666348025fd
7
- data.tar.gz: 90bb9ab5d3b7d86efbfafdeef445d8a94bae9352ad199173b6e3a96d551a4d77a3fffb13a7e858aa35c836583ea0d0852b462af226cc31e66af252137a8f1ee3
6
+ metadata.gz: f00b6ad97bef4ec78ebc2b14b80e2ac0c3433e7bbda3cc40904339e0029af67e2bd90fd17f66e2ee71a2dc74f04432a9fddbad48074cd854affcd7b5e3d6db68
7
+ data.tar.gz: f3113726bb54b14fcf9c4a0224e82c504fb9854a138d79f3b5fd664aa0e4e2c7ec8e92e1483f3ac9834307f5e7d0a7cf87fc68bbdd9aea1dad052354ca4af069
@@ -24,12 +24,14 @@ module ActsAsRoleRestricted
24
24
  included do
25
25
  attr_accessor(:current_user) unless respond_to?(:current_user)
26
26
 
27
+ attr_accessor :skip_effective_roles_validation
28
+
27
29
  acts_as_role_restricted_options = @acts_as_role_restricted_opts.dup
28
30
  self.send(:define_method, :acts_as_role_restricted_options) { acts_as_role_restricted_options }
29
31
 
30
32
  validates :roles_mask, numericality: true, allow_nil: true
31
33
 
32
- validate(if: -> { changes.include?(:roles_mask) && EffectiveRoles.assignable_roles_present?(self) && current_user.present? }) do
34
+ validate(if: -> { changes.include?(:roles_mask) && EffectiveRoles.assignable_roles_present?(self) && current_user.present? }, unless: -> { skip_effective_roles_validation }) do
33
35
  roles_was = EffectiveRoles.roles_for(changes[:roles_mask].first)
34
36
  changed = (roles + roles_was) - (roles & roles_was) # XOR
35
37
 
@@ -73,7 +75,11 @@ module ActsAsRoleRestricted
73
75
  def with_role_sql(*roles)
74
76
  roles = roles.flatten.compact
75
77
  roles = roles.first.roles if roles.length == 1 && roles.first.respond_to?(:roles)
76
- roles = (roles.map { |role| role.to_sym } & EffectiveRoles.roles)
78
+ roles = roles.map { |role| role.to_sym }
79
+
80
+ if(invalid = (roles - EffectiveRoles.roles)).present?
81
+ raise("unknown role :#{invalid.to_sentence}")
82
+ end
77
83
 
78
84
  roles.map { |role| "(#{self.table_name}.roles_mask & %d > 0)" % 2**EffectiveRoles.roles.index(role) }.join(' OR ')
79
85
  end
@@ -81,7 +87,11 @@ module ActsAsRoleRestricted
81
87
  def without_role(*roles)
82
88
  roles = roles.flatten.compact
83
89
  roles = roles.first.roles if roles.length == 1 && roles.first.respond_to?(:roles)
84
- roles = (roles.map { |role| role.to_sym } & EffectiveRoles.roles)
90
+ roles = roles.map { |role| role.to_sym }
91
+
92
+ if(invalid = (roles - EffectiveRoles.roles)).present?
93
+ raise("unknown role :#{invalid.to_sentence}")
94
+ end
85
95
 
86
96
  where(
87
97
  roles.map { |role| "NOT(#{self.table_name}.roles_mask & %d > 0)" % 2**EffectiveRoles.roles.index(role) }.join(' AND ')
@@ -1,3 +1,3 @@
1
1
  module EffectiveRoles
2
- VERSION = '2.6.0'.freeze
2
+ VERSION = '2.7.1'.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: 2.6.0
4
+ version: 2.7.1
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: 2024-04-12 00:00:00.000000000 Z
11
+ date: 2024-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails