consent 2.0.0 → 2.2.0

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
  SHA256:
3
- metadata.gz: 95c988d7005c2d40bc6c83a00421e15079737a8759ae635764baf1008e0bd588
4
- data.tar.gz: bdd9f0cc35741ecdf89bbc9b68de9819bcedc87b3e98ddc05a00d086c66d0b6d
3
+ metadata.gz: 32f3bcb4617c05a326d76f7648a670a18500f07291f047edaddcb17f3e7999e1
4
+ data.tar.gz: 8b85e9ecc63cd83eaeabcf70f9db022725a1e2c4e982196f14d714340de6c7ce
5
5
  SHA512:
6
- metadata.gz: '008f73e94d325ab83a1a63ffa696aea1e22c6db5b44ef49f9d11bc2c1d8773d5a9cf3eec7466870b4cfabb2d13ec23f4d6fa3742cfa5dd6c890322e83694fe0a'
7
- data.tar.gz: aaa27addbb0c0372660f8680e981be5b48a5cc5bb30c42f22d0d75a347111f1733c5b410b67ca8f5e5259bdb76b9283f2af93ec5ce18350aeeed47ac48ccdc87
6
+ metadata.gz: 7f61f0aa61b8ee3cc4da4c9e7baf0c7032f18e1b2b00ad4592b18dea04c12d5dfa3522971a7fc93ea52138075d21cd0ecf1647e18b2b7ede38c2ff40333fa508
7
+ data.tar.gz: 7b2bbb5226cf584a5b0e08ee3aeead88c0440afba2ea5ac2357b311029eb06979b39c41a02bfc894df36a1480b469895cb078434b4710e06b6ee04a89f692eb9
data/.gitignore CHANGED
@@ -11,7 +11,6 @@ vendor/bundle
11
11
  *.log
12
12
  *.sqlite
13
13
  *.sqlite3
14
- Gemfile.lock
15
14
 
16
15
  # Ignore uploaded files in development
17
16
  /storage/*
data/.rubocop.yml CHANGED
@@ -4,7 +4,15 @@ require:
4
4
  - rubocop-powerhome
5
5
 
6
6
  AllCops:
7
- TargetRubyVersion: 2.7
7
+ TargetRubyVersion: 3.0
8
+
9
+ Style/FrozenStringLiteralComment:
10
+ Exclude:
11
+ - 'gemfiles/*'
12
+
13
+ Bundler/OrderedGems:
14
+ Exclude:
15
+ - 'gemfiles/*'
8
16
 
9
17
  Rails:
10
18
  Enabled: false
data/Appraisals ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise "rails-6-1" do
4
+ gem "rails", "6.1.7.7"
5
+ end
6
+
7
+ appraise "rails-7-0" do
8
+ gem "rails", "7.0.8.7"
9
+ end
10
+
11
+ appraise "rails-7-1" do
12
+ gem "rails", "7.1.3.2"
13
+ end
14
+
15
+ appraise "rails-7-2" do
16
+ gem "rails", "7.2.2.1"
17
+ end
data/Gemfile CHANGED
@@ -5,6 +5,13 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in consent.gemspec
6
6
  gemspec
7
7
 
8
- rails_version = ENV.fetch("RAILS_VERSION", ">= 5")
9
-
10
- gem "rails", rails_version
8
+ gem "base64"
9
+ gem "bigdecimal"
10
+ gem "erb", "< 5.0" # Hold erb to support Ruby < 3.2
11
+ gem "logger"
12
+ gem "mutex_m"
13
+ gem "net-imap", "< 0.5.0"
14
+ gem "nokogiri", "< 1.18"
15
+ gem "rubocop-powerhome", path: "../rubocop-powerhome"
16
+ gem "securerandom", "< 0.4" # Hold securerandom to support Ruby 3.0
17
+ gem "zeitwerk", "< 2.7.0"
data/Gemfile.lock ADDED
@@ -0,0 +1,275 @@
1
+ PATH
2
+ remote: ../rubocop-powerhome
3
+ specs:
4
+ rubocop-powerhome (0.5.5)
5
+ rubocop (= 1.74.0)
6
+ rubocop-performance
7
+ rubocop-rails
8
+ rubocop-rake
9
+ rubocop-rspec
10
+
11
+ PATH
12
+ remote: .
13
+ specs:
14
+ consent (2.2.0)
15
+ cancancan (= 3.2.1)
16
+
17
+ GEM
18
+ remote: https://rubygems.org/
19
+ specs:
20
+ actionpack (8.0.2)
21
+ actionview (= 8.0.2)
22
+ activesupport (= 8.0.2)
23
+ nokogiri (>= 1.8.5)
24
+ rack (>= 2.2.4)
25
+ rack-session (>= 1.0.1)
26
+ rack-test (>= 0.6.3)
27
+ rails-dom-testing (~> 2.2)
28
+ rails-html-sanitizer (~> 1.6)
29
+ useragent (~> 0.16)
30
+ actionview (8.0.2)
31
+ activesupport (= 8.0.2)
32
+ builder (~> 3.1)
33
+ erubi (~> 1.11)
34
+ rails-dom-testing (~> 2.2)
35
+ rails-html-sanitizer (~> 1.6)
36
+ activemodel (8.0.2)
37
+ activesupport (= 8.0.2)
38
+ activerecord (8.0.2)
39
+ activemodel (= 8.0.2)
40
+ activesupport (= 8.0.2)
41
+ timeout (>= 0.4.0)
42
+ activesupport (8.0.2)
43
+ base64
44
+ benchmark (>= 0.3)
45
+ bigdecimal
46
+ concurrent-ruby (~> 1.0, >= 1.3.1)
47
+ connection_pool (>= 2.2.5)
48
+ drb
49
+ i18n (>= 1.6, < 2)
50
+ logger (>= 1.4.2)
51
+ minitest (>= 5.1)
52
+ securerandom (>= 0.3)
53
+ tzinfo (~> 2.0, >= 2.0.5)
54
+ uri (>= 0.13.1)
55
+ appraisal (2.5.0)
56
+ bundler
57
+ rake
58
+ thor (>= 0.14.0)
59
+ ast (2.4.3)
60
+ base64 (0.3.0)
61
+ benchmark (0.4.1)
62
+ bigdecimal (3.2.2)
63
+ builder (3.3.0)
64
+ byebug (11.1.3)
65
+ cancancan (3.2.1)
66
+ cgi (0.5.0)
67
+ coderay (1.1.3)
68
+ combustion (1.5.0)
69
+ activesupport (>= 3.0.0)
70
+ railties (>= 3.0.0)
71
+ thor (>= 0.14.6)
72
+ concurrent-ruby (1.3.5)
73
+ connection_pool (2.5.3)
74
+ crass (1.0.6)
75
+ csv (3.3.5)
76
+ date (3.4.1)
77
+ diff-lcs (1.6.2)
78
+ drb (2.2.3)
79
+ erb (4.0.4)
80
+ cgi (>= 0.3.3)
81
+ erubi (1.13.1)
82
+ i18n (1.14.7)
83
+ concurrent-ruby (~> 1.0)
84
+ io-console (0.8.1)
85
+ irb (1.15.2)
86
+ pp (>= 0.6.0)
87
+ rdoc (>= 4.0.0)
88
+ reline (>= 0.4.2)
89
+ json (2.13.2)
90
+ language_server-protocol (3.17.0.5)
91
+ license_finder (7.2.1)
92
+ bundler
93
+ csv (~> 3.2)
94
+ rubyzip (>= 1, < 3)
95
+ thor (~> 1.2)
96
+ tomlrb (>= 1.3, < 2.1)
97
+ with_env (= 1.1.0)
98
+ xml-simple (~> 1.1.9)
99
+ lint_roller (1.1.0)
100
+ logger (1.7.0)
101
+ loofah (2.24.1)
102
+ crass (~> 1.0.2)
103
+ nokogiri (>= 1.12.0)
104
+ method_source (1.1.0)
105
+ mini_portile2 (2.8.9)
106
+ minitest (5.25.5)
107
+ mutex_m (0.3.0)
108
+ net-imap (0.4.22)
109
+ date
110
+ net-protocol
111
+ net-protocol (0.2.2)
112
+ timeout
113
+ nokogiri (1.17.2)
114
+ mini_portile2 (~> 2.8.2)
115
+ racc (~> 1.4)
116
+ nokogiri (1.17.2-arm64-darwin)
117
+ racc (~> 1.4)
118
+ nokogiri (1.17.2-x86_64-linux)
119
+ racc (~> 1.4)
120
+ parallel (1.27.0)
121
+ parser (3.3.9.0)
122
+ ast (~> 2.4.1)
123
+ racc
124
+ pp (0.6.2)
125
+ prettyprint
126
+ prettyprint (0.2.0)
127
+ prism (1.4.0)
128
+ pry (0.14.2)
129
+ coderay (~> 1.1)
130
+ method_source (~> 1.0)
131
+ pry-byebug (3.10.1)
132
+ byebug (~> 11.0)
133
+ pry (>= 0.13, < 0.15)
134
+ psych (5.2.6)
135
+ date
136
+ stringio
137
+ racc (1.8.1)
138
+ rack (3.2.0)
139
+ rack-session (2.1.1)
140
+ base64 (>= 0.1.0)
141
+ rack (>= 3.0.0)
142
+ rack-test (2.2.0)
143
+ rack (>= 1.3)
144
+ rackup (2.2.1)
145
+ rack (>= 3)
146
+ rails-dom-testing (2.3.0)
147
+ activesupport (>= 5.0.0)
148
+ minitest
149
+ nokogiri (>= 1.6)
150
+ rails-html-sanitizer (1.6.2)
151
+ loofah (~> 2.21)
152
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
153
+ railties (8.0.2)
154
+ actionpack (= 8.0.2)
155
+ activesupport (= 8.0.2)
156
+ irb (~> 1.13)
157
+ rackup (>= 1.0.0)
158
+ rake (>= 12.2)
159
+ thor (~> 1.0, >= 1.2.2)
160
+ zeitwerk (~> 2.6)
161
+ rainbow (3.1.1)
162
+ rake (13.3.0)
163
+ rdoc (6.14.2)
164
+ erb
165
+ psych (>= 4.0.0)
166
+ regexp_parser (2.11.0)
167
+ reline (0.6.2)
168
+ io-console (~> 0.5)
169
+ rexml (3.4.1)
170
+ rspec (3.13.1)
171
+ rspec-core (~> 3.13.0)
172
+ rspec-expectations (~> 3.13.0)
173
+ rspec-mocks (~> 3.13.0)
174
+ rspec-core (3.13.5)
175
+ rspec-support (~> 3.13.0)
176
+ rspec-expectations (3.13.5)
177
+ diff-lcs (>= 1.2.0, < 2.0)
178
+ rspec-support (~> 3.13.0)
179
+ rspec-mocks (3.13.5)
180
+ diff-lcs (>= 1.2.0, < 2.0)
181
+ rspec-support (~> 3.13.0)
182
+ rspec-rails (6.1.5)
183
+ actionpack (>= 6.1)
184
+ activesupport (>= 6.1)
185
+ railties (>= 6.1)
186
+ rspec-core (~> 3.13)
187
+ rspec-expectations (~> 3.13)
188
+ rspec-mocks (~> 3.13)
189
+ rspec-support (~> 3.13)
190
+ rspec-support (3.13.4)
191
+ rubocop (1.74.0)
192
+ json (~> 2.3)
193
+ language_server-protocol (~> 3.17.0.2)
194
+ lint_roller (~> 1.1.0)
195
+ parallel (~> 1.10)
196
+ parser (>= 3.3.0.2)
197
+ rainbow (>= 2.2.2, < 4.0)
198
+ regexp_parser (>= 2.9.3, < 3.0)
199
+ rubocop-ast (>= 1.38.0, < 2.0)
200
+ ruby-progressbar (~> 1.7)
201
+ unicode-display_width (>= 2.4.0, < 4.0)
202
+ rubocop-ast (1.46.0)
203
+ parser (>= 3.3.7.2)
204
+ prism (~> 1.4)
205
+ rubocop-performance (1.24.0)
206
+ lint_roller (~> 1.1)
207
+ rubocop (>= 1.72.1, < 2.0)
208
+ rubocop-ast (>= 1.38.0, < 2.0)
209
+ rubocop-rails (2.30.3)
210
+ activesupport (>= 4.2.0)
211
+ lint_roller (~> 1.1)
212
+ rack (>= 1.1)
213
+ rubocop (>= 1.72.1, < 2.0)
214
+ rubocop-ast (>= 1.38.0, < 2.0)
215
+ rubocop-rake (0.7.1)
216
+ lint_roller (~> 1.1)
217
+ rubocop (>= 1.72.1)
218
+ rubocop-rspec (3.6.0)
219
+ lint_roller (~> 1.1)
220
+ rubocop (~> 1.72, >= 1.72.1)
221
+ ruby-progressbar (1.13.0)
222
+ rubyzip (2.4.1)
223
+ securerandom (0.3.2)
224
+ sqlite3 (1.7.3)
225
+ mini_portile2 (~> 2.8.0)
226
+ sqlite3 (1.7.3-arm64-darwin)
227
+ sqlite3 (1.7.3-x86_64-linux)
228
+ stringio (3.1.7)
229
+ thor (1.4.0)
230
+ timeout (0.4.3)
231
+ tomlrb (2.0.3)
232
+ tzinfo (2.0.6)
233
+ concurrent-ruby (~> 1.0)
234
+ unicode-display_width (3.1.4)
235
+ unicode-emoji (~> 4.0, >= 4.0.4)
236
+ unicode-emoji (4.0.4)
237
+ uri (1.0.3)
238
+ useragent (0.16.11)
239
+ with_env (1.1.0)
240
+ xml-simple (1.1.9)
241
+ rexml
242
+ zeitwerk (2.6.18)
243
+
244
+ PLATFORMS
245
+ arm64-darwin-22
246
+ arm64-darwin-23
247
+ ruby
248
+ x86_64-linux
249
+
250
+ DEPENDENCIES
251
+ activerecord (>= 5)
252
+ appraisal (~> 2.5.0)
253
+ base64
254
+ bigdecimal
255
+ bundler (~> 2.1)
256
+ combustion (~> 1.3)
257
+ consent!
258
+ erb (< 5.0)
259
+ license_finder (>= 7.0)
260
+ logger
261
+ mutex_m
262
+ net-imap (< 0.5.0)
263
+ nokogiri (< 1.18)
264
+ pry (>= 0.14.2)
265
+ pry-byebug (= 3.10.1)
266
+ rake (~> 13)
267
+ rspec (~> 3.0)
268
+ rspec-rails (~> 6.1.5)
269
+ rubocop-powerhome!
270
+ securerandom (< 0.4)
271
+ sqlite3 (~> 1.7.3)
272
+ zeitwerk (< 2.7.0)
273
+
274
+ BUNDLED WITH
275
+ 2.5.23
@@ -2,9 +2,10 @@
2
2
 
3
3
  module Consent
4
4
  class History < ::Consent::ApplicationRecord
5
+ include Consent::SubjectCoder::Model
6
+
5
7
  enum command: { grant: "grant", revoke: "revoke" }
6
8
 
7
- serialize :subject, ::Consent::SubjectCoder
8
9
  validates :subject, presence: true
9
10
  validates :action, presence: true
10
11
  validates :view, presence: true
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Consent
4
4
  class Permission < ::Consent::ApplicationRecord
5
- serialize :subject, ::Consent::SubjectCoder
5
+ include Consent::SubjectCoder::Model
6
6
 
7
7
  validates :subject, presence: true
8
8
  validates :action, presence: true
@@ -14,7 +14,7 @@ module Consent
14
14
  after_save { ::Consent::History.record(:grant, self) }
15
15
  after_destroy { ::Consent::History.record(:revoke, self) }
16
16
 
17
- scope :to, ->(subject:, action: nil, view: nil) do
17
+ def self.to(subject:, action: nil, view: nil)
18
18
  where({ subject: subject, action: action, view: view }.compact)
19
19
  end
20
20
 
data/bin/console CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'bundler/setup'
5
- require 'consent'
4
+ require "bundler/setup"
5
+ require "consent"
6
6
 
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
@@ -11,5 +11,5 @@ require 'consent'
11
11
  # require "pry"
12
12
  # Pry.start
13
13
 
14
- require 'irb'
14
+ require "irb"
15
15
  IRB.start
data/consent.gemspec CHANGED
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path("lib", __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "consent/version"
3
+ require_relative "lib/consent/version"
6
4
 
7
5
  Gem::Specification.new do |spec|
8
6
  spec.name = "consent"
@@ -14,22 +12,24 @@ Gem::Specification.new do |spec|
14
12
  spec.description = "Consent permission based authorization"
15
13
  spec.homepage = "https://github.com/powerhome/power-tools"
16
14
  spec.license = "MIT"
17
- spec.required_ruby_version = ">= 2.7"
15
+ spec.required_ruby_version = ">= 3.0"
18
16
 
17
+ spec.metadata["rubygems_mfa_required"] = "true"
19
18
  spec.files = `git ls-files`.split.grep_v(/^(test|spec|features)/)
20
19
  spec.require_paths = ["lib"]
21
20
 
22
21
  spec.add_dependency "cancancan", "3.2.1"
23
22
 
24
23
  spec.add_development_dependency "activerecord", ">= 5"
24
+ spec.add_development_dependency "appraisal", "~> 2.5.0"
25
25
  spec.add_development_dependency "bundler", "~> 2.1"
26
26
  spec.add_development_dependency "combustion", "~> 1.3"
27
27
  spec.add_development_dependency "license_finder", ">= 7.0"
28
- spec.add_development_dependency "pry-byebug", "3.9.0"
28
+ spec.add_development_dependency "pry", ">= 0.14.2"
29
+ spec.add_development_dependency "pry-byebug", "3.10.1"
29
30
  spec.add_development_dependency "rake", "~> 13"
30
31
  spec.add_development_dependency "rspec", "~> 3.0"
31
- spec.add_development_dependency "rspec-rails", "~> 5.1.2"
32
+ spec.add_development_dependency "rspec-rails", "~> 6.1.5"
32
33
  spec.add_development_dependency "rubocop-powerhome", "0.5.0"
33
- spec.add_development_dependency "sqlite3", "~> 1.4.2"
34
- spec.metadata["rubygems_mfa_required"] = "true"
34
+ spec.add_development_dependency "sqlite3", "~> 1.7.3"
35
35
  end
data/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [2.2.0] - 2025-08-08
4
+
5
+ - Add support to Ruby 3.3 and Rails 6.1 [#356](https://github.com/powerhome/power-tools/pull/356)
6
+
7
+ ## [2.1.0] - 2025-02-19
8
+
9
+ - Add support to rails 7.1+ [#308](https://github.com/powerhome/power-tools/pull/308)
10
+ - removed eval_view as a legacy, unsafe concern
11
+
12
+ ## [2.0.1] - 2023-01-08
13
+
14
+ - Bugfixes, minor version bumps
15
+
3
16
  ## [2.0.0] - 2022-09-02
4
17
 
5
18
  - Support multiple versions of rails (>= 5.2.8.1)
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_RETRY: "1"
@@ -0,0 +1,17 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "base64"
6
+ gem "bigdecimal"
7
+ gem "erb", "< 5.0"
8
+ gem "logger"
9
+ gem "mutex_m"
10
+ gem "net-imap", "< 0.5.0"
11
+ gem "nokogiri", "< 1.18"
12
+ gem "rubocop-powerhome", path: "../../rubocop-powerhome"
13
+ gem "securerandom", "< 0.4"
14
+ gem "zeitwerk", "< 2.7.0"
15
+ gem "rails", "6.1.7.7"
16
+
17
+ gemspec path: "../"