rabarber 3.0.2 → 4.0.1
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 +4 -4
- data/CHANGELOG.md +17 -0
- data/lib/rabarber/audit/events/base.rb +2 -2
- data/lib/rabarber/core/roleable.rb +1 -1
- data/lib/rabarber/helpers/helpers.rb +2 -2
- data/lib/rabarber/models/concerns/has_roles.rb +2 -2
- data/lib/rabarber/models/role.rb +16 -6
- data/lib/rabarber/version.rb +1 -1
- data/rabarber.gemspec +2 -2
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44b43bb0c28c871575c4e723415cd3df577a2fa715b07178c4a8a21102183791
|
4
|
+
data.tar.gz: 7cf707c61a560d271345162834a0557f51519a0fbfe9d1e81eb3d74cfb401cff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09d9897bdd2df705e37bf9800a10f30904b102d8d33773e35cec4ed0c7ceebeca78fc47ce038cc6b617f698ee89cebc7d34da7d0cd3ef67685cc2d61ed022ebb'
|
7
|
+
data.tar.gz: 610d8700782cc500bfa83d62de0816c2b6253f6fcb42d5c233213675da9e4c7d9b0b7e9b07287514d48cae68b0cc56440cb0e225147487f2f15d02ea5a8e7aab
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## v4.0.1
|
2
|
+
|
3
|
+
### Bugs:
|
4
|
+
|
5
|
+
- Resolved an issue preventing the gem from being used with rbs_rails
|
6
|
+
|
7
|
+
## v4.0.0
|
8
|
+
|
9
|
+
### Breaking:
|
10
|
+
|
11
|
+
- Dropped support for Ruby 3.0
|
12
|
+
- Dropped support for Rails 6.1
|
13
|
+
|
14
|
+
### Misc:
|
15
|
+
|
16
|
+
- Added support for Rails 8.0
|
17
|
+
|
1
18
|
## v3.0.2
|
2
19
|
|
3
20
|
### Misc:
|
@@ -38,8 +38,8 @@ module Rabarber
|
|
38
38
|
def human_context
|
39
39
|
case context
|
40
40
|
in { context_type: nil, context_id: nil } then "Global"
|
41
|
-
in { context_type
|
42
|
-
in { context_type
|
41
|
+
in { context_type:, context_id: nil } then context_type
|
42
|
+
in { context_type:, context_id: } then "#{context_type}##{context_id}"
|
43
43
|
else raise "Unexpected context: #{context}"
|
44
44
|
end
|
45
45
|
end
|
@@ -5,11 +5,11 @@ module Rabarber
|
|
5
5
|
include Rabarber::Core::Roleable
|
6
6
|
|
7
7
|
def visible_to(*roles, context: nil, &block)
|
8
|
-
capture(&block) if roleable.has_role?(*roles, context:
|
8
|
+
capture(&block) if roleable.has_role?(*roles, context:)
|
9
9
|
end
|
10
10
|
|
11
11
|
def hidden_from(*roles, context: nil, &block)
|
12
|
-
capture(&block) unless roleable.has_role?(*roles, context:
|
12
|
+
capture(&block) unless roleable.has_role?(*roles, context:)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -85,7 +85,7 @@ module Rabarber
|
|
85
85
|
private
|
86
86
|
|
87
87
|
def create_new_roles(role_names, context:)
|
88
|
-
new_roles = role_names - Rabarber::Role.names(context:
|
88
|
+
new_roles = role_names - Rabarber::Role.names(context:)
|
89
89
|
new_roles.each { |role_name| Rabarber::Role.create!(name: role_name, **context) }
|
90
90
|
end
|
91
91
|
|
@@ -98,7 +98,7 @@ module Rabarber
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def delete_roleable_cache(context:)
|
101
|
-
Rabarber::Core::Cache.delete(roleable_id, context:
|
101
|
+
Rabarber::Core::Cache.delete(roleable_id, context:)
|
102
102
|
end
|
103
103
|
|
104
104
|
def roleable_id
|
data/lib/rabarber/models/role.rb
CHANGED
@@ -9,7 +9,7 @@ module Rabarber
|
|
9
9
|
format: { with: Rabarber::Input::Role::REGEX },
|
10
10
|
strict: true
|
11
11
|
|
12
|
-
|
12
|
+
before_destroy :delete_assignments
|
13
13
|
|
14
14
|
class << self
|
15
15
|
def names(context: nil)
|
@@ -20,9 +20,9 @@ module Rabarber
|
|
20
20
|
name = process_role_name(name)
|
21
21
|
processed_context = process_context(context)
|
22
22
|
|
23
|
-
return false if exists?(name
|
23
|
+
return false if exists?(name:, **processed_context)
|
24
24
|
|
25
|
-
!!create!(name
|
25
|
+
!!create!(name:, **processed_context)
|
26
26
|
end
|
27
27
|
|
28
28
|
def rename(old_name, new_name, context: nil, force: false)
|
@@ -30,11 +30,11 @@ module Rabarber
|
|
30
30
|
role = find_by(name: process_role_name(old_name), **processed_context)
|
31
31
|
name = process_role_name(new_name)
|
32
32
|
|
33
|
-
return false if !role || exists?(name
|
33
|
+
return false if !role || exists?(name:, **processed_context) || assigned_to_roleables(role).any? && !force
|
34
34
|
|
35
35
|
delete_roleables_cache(role, context: processed_context)
|
36
36
|
|
37
|
-
role.update!(name:
|
37
|
+
role.update!(name:)
|
38
38
|
end
|
39
39
|
|
40
40
|
def remove(name, context: nil, force: false)
|
@@ -57,7 +57,7 @@ module Rabarber
|
|
57
57
|
private
|
58
58
|
|
59
59
|
def delete_roleables_cache(role, context:)
|
60
|
-
Rabarber::Core::Cache.delete(*assigned_to_roleables(role), context:
|
60
|
+
Rabarber::Core::Cache.delete(*assigned_to_roleables(role), context:)
|
61
61
|
end
|
62
62
|
|
63
63
|
def assigned_to_roleables(role)
|
@@ -76,5 +76,15 @@ module Rabarber
|
|
76
76
|
Rabarber::Input::Context.new(context).process
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def delete_assignments
|
83
|
+
ActiveRecord::Base.connection.execute(
|
84
|
+
ActiveRecord::Base.sanitize_sql(
|
85
|
+
["DELETE FROM rabarber_roles_roleables WHERE role_id = ?", id]
|
86
|
+
)
|
87
|
+
)
|
88
|
+
end
|
79
89
|
end
|
80
90
|
end
|
data/lib/rabarber/version.rb
CHANGED
data/rabarber.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.metadata["rubygems_mfa_required"] = "true"
|
15
15
|
spec.summary = "Simple role-based authorization library for Ruby on Rails"
|
16
16
|
spec.license = "MIT"
|
17
|
-
spec.required_ruby_version = ">= 3.
|
17
|
+
spec.required_ruby_version = ">= 3.1", "< 3.4"
|
18
18
|
|
19
19
|
spec.files = [
|
20
20
|
"rabarber.gemspec", "README.md", "CHANGELOG.md", "LICENSE.txt"
|
@@ -22,5 +22,5 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_dependency "rails", ">=
|
25
|
+
spec.add_dependency "rails", ">= 7.0", "< 8.1"
|
26
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabarber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- enjaku4
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-11-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -17,20 +17,20 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '7.0'
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '8.1'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
30
|
+
version: '7.0'
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '8.1'
|
34
34
|
description:
|
35
35
|
email:
|
36
36
|
- rabarber_gem@icloud.com
|
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
requirements:
|
91
91
|
- - ">="
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '3.
|
93
|
+
version: '3.1'
|
94
94
|
- - "<"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3.4'
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
|
-
rubygems_version: 3.
|
103
|
+
rubygems_version: 3.3.27
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: Simple role-based authorization library for Ruby on Rails
|