rabarber 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 +4 -4
- data/CHANGELOG.md +7 -2
- data/README.md +3 -8
- data/lib/rabarber/controllers/concerns/authorization.rb +1 -1
- data/lib/rabarber/models/concerns/has_roles.rb +10 -6
- data/lib/rabarber/version.rb +1 -1
- data/rabarber.gemspec +23 -0
- metadata +3 -6
- data/.rspec +0 -4
- data/.rubocop.yml +0 -69
- data/Gemfile +0 -17
- data/Rakefile +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b3ce45aa7325a095c750691a8633e323a57a987b2c4e4f45902726ce0d30458
|
4
|
+
data.tar.gz: 66be6c782c564ef658a405ec94c2ada4b46915820a0b9ac5afcfbf0a5bbcedd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb12a4ed60e610cb9875243bb87d78ba0e0ab0713507d1967485e16b57fbe7856cbfcf855878b37c75827d02f81fa7baa8cd2f299020bb24dc621fa44aeaf902
|
7
|
+
data.tar.gz: 3e65bde49df87b1656eab0b92b8da9cd5fd5975e725911026d8ada08b95eedf912aea4dffb0aa39ba1319979ed4cbb90ff234c66a32b91bbd3c3cda224867e64
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
+
## 1.0.2
|
2
|
+
|
3
|
+
- Various enhancements for gem development and release
|
4
|
+
- Modify `HasRoles#roles` method to return an array of role names instead of `Rabarber::Role` objects
|
5
|
+
|
1
6
|
## 1.0.1
|
2
7
|
|
3
|
-
- Various
|
8
|
+
- Various enhancements for gem development
|
4
9
|
|
5
10
|
## 1.0.0
|
6
11
|
|
@@ -15,7 +20,7 @@
|
|
15
20
|
|
16
21
|
## 0.1.4
|
17
22
|
|
18
|
-
- Remove `role?` method as unnecessary
|
23
|
+
- Remove `HasRoles#role?` method as unnecessary
|
19
24
|
|
20
25
|
## 0.1.3
|
21
26
|
|
data/README.md
CHANGED
@@ -136,13 +136,6 @@ To view all the roles assigned to the user, use:
|
|
136
136
|
```rb
|
137
137
|
user.roles
|
138
138
|
```
|
139
|
-
This will return an array of `Rabarber::Role` objects.
|
140
|
-
|
141
|
-
If you need the list of role names, use:
|
142
|
-
|
143
|
-
```rb
|
144
|
-
user.roles.names
|
145
|
-
```
|
146
139
|
|
147
140
|
If you need to list all the role names available in your application, use:
|
148
141
|
|
@@ -150,7 +143,9 @@ If you need to list all the role names available in your application, use:
|
|
150
143
|
Rabarber::Role.names
|
151
144
|
```
|
152
145
|
|
153
|
-
|
146
|
+
`Rabarber::Role` is a model that represents roles within your application. It has a single attribute, `name`, which is validated for both uniqueness and presence. You can treat `Rabarber::Role` as a regular Rails model and use Active Record methods on it if necessary.
|
147
|
+
|
148
|
+
Utilize the aforementioned methods to manipulate user roles. For example, create a custom UI for managing roles or assign necessary roles during migration or runtime (e.g., when the user is created). You can also write custom authorization policies based on `#has_role?` method (e.g., to scope the data that the user can access). Adapt these methods to fit the requirements of your application.
|
154
149
|
|
155
150
|
---
|
156
151
|
|
@@ -18,7 +18,7 @@ module Rabarber
|
|
18
18
|
|
19
19
|
def verify_access
|
20
20
|
return if Permissions.access_granted?(
|
21
|
-
send(::Rabarber::Configuration.instance.current_user_method).roles
|
21
|
+
send(::Rabarber::Configuration.instance.current_user_method).roles, self.class, action_name.to_sym, self
|
22
22
|
)
|
23
23
|
|
24
24
|
::Rabarber::Configuration.instance.when_unauthorized.call(self)
|
@@ -9,15 +9,19 @@ module Rabarber
|
|
9
9
|
|
10
10
|
@@included = name
|
11
11
|
|
12
|
-
has_and_belongs_to_many :
|
13
|
-
|
14
|
-
|
12
|
+
has_and_belongs_to_many :rabarber_roles, class_name: "Rabarber::Role",
|
13
|
+
foreign_key: "roleable_id",
|
14
|
+
join_table: "rabarber_roles_roleables"
|
15
|
+
end
|
16
|
+
|
17
|
+
def roles
|
18
|
+
rabarber_roles.names
|
15
19
|
end
|
16
20
|
|
17
21
|
def has_role?(*role_names)
|
18
22
|
validate_role_names(role_names)
|
19
23
|
|
20
|
-
roles
|
24
|
+
(roles & role_names).any?
|
21
25
|
end
|
22
26
|
|
23
27
|
def assign_roles(*role_names, create_new: true)
|
@@ -25,13 +29,13 @@ module Rabarber
|
|
25
29
|
|
26
30
|
create_new_roles(role_names) if create_new
|
27
31
|
|
28
|
-
|
32
|
+
rabarber_roles << Role.where(name: role_names) - rabarber_roles
|
29
33
|
end
|
30
34
|
|
31
35
|
def revoke_roles(*role_names)
|
32
36
|
validate_role_names(role_names)
|
33
37
|
|
34
|
-
self.
|
38
|
+
self.rabarber_roles = rabarber_roles - Role.where(name: role_names)
|
35
39
|
end
|
36
40
|
|
37
41
|
private
|
data/lib/rabarber/version.rb
CHANGED
data/rabarber.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/rabarber/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "rabarber"
|
7
|
+
spec.version = Rabarber::VERSION
|
8
|
+
spec.authors = ["enjaku4"]
|
9
|
+
spec.email = ["enjaku4@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "Simple authorization library for Ruby on Rails."
|
12
|
+
spec.homepage = "https://github.com/enjaku4/rabarber"
|
13
|
+
spec.license = "MIT"
|
14
|
+
spec.required_ruby_version = ">= 3.0"
|
15
|
+
|
16
|
+
spec.files = [
|
17
|
+
"rabarber.gemspec", "README.md", "CHANGELOG.md", "LICENSE.txt"
|
18
|
+
] + `git ls-files | grep -E '^(lib)'`.split("\n")
|
19
|
+
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_runtime_dependency "rails", ">= 6.1"
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabarber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- enjaku4
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -31,13 +31,9 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- ".rspec"
|
35
|
-
- ".rubocop.yml"
|
36
34
|
- CHANGELOG.md
|
37
|
-
- Gemfile
|
38
35
|
- LICENSE.txt
|
39
36
|
- README.md
|
40
|
-
- Rakefile
|
41
37
|
- lib/generators/rabarber/roles_generator.rb
|
42
38
|
- lib/generators/rabarber/templates/create_rabarber_roles.rb.erb
|
43
39
|
- lib/rabarber.rb
|
@@ -50,6 +46,7 @@ files:
|
|
50
46
|
- lib/rabarber/permissions.rb
|
51
47
|
- lib/rabarber/rule.rb
|
52
48
|
- lib/rabarber/version.rb
|
49
|
+
- rabarber.gemspec
|
53
50
|
homepage: https://github.com/enjaku4/rabarber
|
54
51
|
licenses:
|
55
52
|
- MIT
|
data/.rspec
DELETED
data/.rubocop.yml
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
require:
|
2
|
-
- rubocop-rails
|
3
|
-
- rubocop-rake
|
4
|
-
- rubocop-rspec
|
5
|
-
|
6
|
-
AllCops:
|
7
|
-
TargetRubyVersion: 3.0
|
8
|
-
|
9
|
-
Layout/LineLength:
|
10
|
-
Max: 120
|
11
|
-
|
12
|
-
Metrics/BlockLength:
|
13
|
-
Enabled: false
|
14
|
-
|
15
|
-
Naming/PredicateName:
|
16
|
-
Enabled: false
|
17
|
-
|
18
|
-
Rails/ApplicationController:
|
19
|
-
Exclude:
|
20
|
-
- spec/support/controllers.rb
|
21
|
-
|
22
|
-
Rails/ApplicationRecord:
|
23
|
-
Exclude:
|
24
|
-
- lib/rabarber/models/role.rb
|
25
|
-
- spec/support/models.rb
|
26
|
-
|
27
|
-
RSpec/ContextWording:
|
28
|
-
Enabled: false
|
29
|
-
|
30
|
-
RSpec/ExampleLength:
|
31
|
-
Enabled: false
|
32
|
-
|
33
|
-
RSpec/FilePath:
|
34
|
-
Enabled: false
|
35
|
-
|
36
|
-
RSpec/MultipleExpectations:
|
37
|
-
Enabled: false
|
38
|
-
|
39
|
-
RSpec/NamedSubject:
|
40
|
-
Enabled: false
|
41
|
-
|
42
|
-
RSpec/NestedGroups:
|
43
|
-
Enabled: false
|
44
|
-
|
45
|
-
Style/ClassVars:
|
46
|
-
Enabled: false
|
47
|
-
|
48
|
-
Style/Documentation:
|
49
|
-
Enabled: false
|
50
|
-
|
51
|
-
Style/Lambda:
|
52
|
-
Enabled: true
|
53
|
-
EnforcedStyle: literal
|
54
|
-
|
55
|
-
Style/StringLiterals:
|
56
|
-
Enabled: true
|
57
|
-
EnforcedStyle: double_quotes
|
58
|
-
|
59
|
-
Style/StringLiteralsInInterpolation:
|
60
|
-
Enabled: true
|
61
|
-
EnforcedStyle: double_quotes
|
62
|
-
|
63
|
-
Style/SymbolArray:
|
64
|
-
Enabled: true
|
65
|
-
EnforcedStyle: brackets
|
66
|
-
|
67
|
-
Style/WordArray:
|
68
|
-
Enabled: true
|
69
|
-
EnforcedStyle: brackets
|
data/Gemfile
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gemspec
|
6
|
-
|
7
|
-
ENV["RAILS_VERSION"] ? gem("rails", ENV["RAILS_VERSION"]) : gem("rails", ">= 6.1")
|
8
|
-
|
9
|
-
gem "database_cleaner-active_record", "~> 2.1"
|
10
|
-
gem "rake", "~> 13.1"
|
11
|
-
gem "rspec", "~> 3.12"
|
12
|
-
gem "rspec-rails", "~> 6.1"
|
13
|
-
gem "rubocop", "~> 1.59"
|
14
|
-
gem "rubocop-rails", "~> 2.23"
|
15
|
-
gem "rubocop-rake", "~> 0.6"
|
16
|
-
gem "rubocop-rspec", "~> 2.25"
|
17
|
-
gem "sqlite3", "~> 1.7"
|