effective_roles 2.7.0 → 2.8.0

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: ff6ad1f95215dd736ce5bd90f0754ea6504a1227acaec9941fd18a7734cedd29
4
- data.tar.gz: 21ae8733e66d032ad5079bbf61877f968f2f6b036d1c69be1114500750a15cea
3
+ metadata.gz: 592048e729650a2988a1b4cd6a88982f74798715385cac9d17f80fd5c975b197
4
+ data.tar.gz: f0dbc94accae4749fa9fea221cf7f0ffc7013463ddd3571e68c64789bed554b5
5
5
  SHA512:
6
- metadata.gz: ab959b54a62a9d139532fba9051e49dcbc0b614dcb6421ca856377544c2a36bf085438f8df56d1179a3b2b948d90cfdbb73fea29f806e341df474792178e1565
7
- data.tar.gz: 675002338facfd196544a287588d2693ff617afddd506ea9b04122128edc34f2af3f087331d2fcff689f41a762c0522f1ce859bcb7915c053dad4b48c638faa6
6
+ metadata.gz: 38b3e7b0aa680d4e47ea1d2411bb3a7c77a5c5155e6f6702b5ee14b14cc48b51bd0497e26c780a5f9fa4aec88cc0cab12da8bc5936cc5def8d44bde29a8f7693
7
+ data.tar.gz: 608cd0e64ecc94c77daba4c559f4b22fa6eb18b8515a33695f87da051dadd72f16b91c1bf6b76a05b457fe2cfb1c1e6e965e1f2d0c76077fc70f7297b75742b4
@@ -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
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveRoles
2
- VERSION = '2.7.0'.freeze
2
+ VERSION = '2.8.0'.freeze
3
3
  end
@@ -44,7 +44,7 @@ module EffectiveRoles
44
44
  (role_colors || {})[role]
45
45
  end
46
46
 
47
- def self.roles_collection(resource, current_user = nil, only: nil, except: nil, multiple: nil, skip_disabled: nil)
47
+ def self.roles_collection(resource, current_user = nil, only: nil, except: nil, skip_disabled: nil)
48
48
  if assignable_roles.present?
49
49
  raise('expected object to respond to is_role_restricted?') unless resource.respond_to?(:is_role_restricted?)
50
50
  raise('expected current_user to respond to is_role_restricted?') if current_user && !current_user.respond_to?(:is_role_restricted?)
@@ -52,11 +52,12 @@ module EffectiveRoles
52
52
 
53
53
  only = Array(only).compact
54
54
  except = Array(except).compact
55
- multiple = resource.acts_as_role_restricted_options[:multiple] if multiple.nil?
56
- assignable = assignable_roles_collection(resource, current_user, multiple: multiple)
57
55
  skip_disabled = assignable_roles.kind_of?(Hash) if skip_disabled.nil?
58
56
 
59
- roles.map do |role|
57
+ all_roles = assignable_roles_collection(resource)
58
+ assignable = assignable_roles_collection(resource, current_user)
59
+
60
+ all_roles.map do |role|
60
61
  next if only.present? && !only.include?(role)
61
62
  next if except.present? && except.include?(role)
62
63
 
@@ -71,7 +72,7 @@ module EffectiveRoles
71
72
  end.compact
72
73
  end
73
74
 
74
- def self.assignable_roles_collection(resource, current_user = nil, multiple: nil)
75
+ def self.assignable_roles_collection(resource, current_user = nil)
75
76
  return roles unless assignable_roles_present?(resource)
76
77
 
77
78
  if current_user && !current_user.respond_to?(:is_role_restricted?)
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.7.0
4
+ version: 2.8.0
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-15 00:00:00.000000000 Z
11
+ date: 2024-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails