grape-jwt-authentication 2.8.1 → 3.1.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: 185fa68e33cd711c3b716ac86c04fba1bc04c64e92d49ec3ec3e6d711c90b5f1
4
- data.tar.gz: da64d2c5e230762cc9c71313d8630eb51c8fc48938db3f703034f194b6fca5e4
3
+ metadata.gz: 459e156f435fe23849864abf466f5d0e26956666b9de49fd73f1361e994e7e6b
4
+ data.tar.gz: f5a8808829644c1c92c86a402b257c7bcbea22eef0fffa4f0e508896c59e1ca4
5
5
  SHA512:
6
- metadata.gz: a89c218c5f328987733e6f9c9b3dd400b7728169a001629a518bbab557ad236c2b33478100f79926554277412d6856fe82478ef755aa46cfe30eddeff169f7f2
7
- data.tar.gz: 174bac1d2fefd144da2e00ea3c55744362607f1a34549224aff22d277b628745693a630fb82c532efbc41f077575a90f235951fd3e9cf31efd78b94b0e7b8ba1
6
+ metadata.gz: 6b79f8023b60a85d4cc7b00fe89a9fb8dda847e6cd9cf4f31718e7e174546320f995fbed0c4dbc4efee61ec324e149bc969eb5a45017bab9a4b383a109753105
7
+ data.tar.gz: a59eb397555bdd6ff85803bfa266c1017c292ec0ed7fff67c0ecc35154a915e4b010cac83f1bf1cf57e6589857206b63ac55cfe497b90c374db416cdef5f15aa
@@ -16,16 +16,16 @@ jobs:
16
16
  docs:
17
17
  name: Release the gem
18
18
  runs-on: ubuntu-22.04
19
- timeout-minutes: 5
19
+ timeout-minutes: 10
20
20
  steps:
21
21
  - uses: actions/checkout@v4
22
22
 
23
- - name: Install Ruby 2.7
23
+ - name: Install Ruby 3.2
24
24
  uses: ruby/setup-ruby@v1
25
25
  with:
26
- ruby-version: 2.7
26
+ ruby-version: 3.2
27
27
  bundler-cache: true
28
- rubygems: '3.4.22'
28
+ rubygems: '3.6.9'
29
29
 
30
30
  - name: Prepare the virtual environment
31
31
  uses: hausgold/actions/ci@master
@@ -18,8 +18,8 @@ jobs:
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
22
- rails: ['6.1', '7.1']
21
+ ruby: ['3.2', '3.3', '3.4']
22
+ rails: ['7.1', '7.2', '8.0', '8.1']
23
23
  env:
24
24
  BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
25
25
  steps:
@@ -30,7 +30,7 @@ jobs:
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
32
  bundler-cache: true
33
- rubygems: '3.4.22'
33
+ rubygems: '3.6.9'
34
34
 
35
35
  - name: Prepare the virtual environment
36
36
  uses: hausgold/actions/ci@master
data/.rubocop.yml CHANGED
@@ -12,8 +12,8 @@ AllCops:
12
12
  NewCops: enable
13
13
  SuggestExtensions: false
14
14
  DisplayCopNames: true
15
- TargetRubyVersion: 2.7
16
- TargetRailsVersion: 6.1
15
+ TargetRubyVersion: 3.2
16
+ TargetRailsVersion: 7.1
17
17
  Exclude:
18
18
  - bin/**/*
19
19
  - vendor/**/*
data/Appraisals CHANGED
@@ -1,13 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise 'rails-6.1' do
4
- gem 'activejob', '~> 6.1.0'
5
- gem 'activerecord', '~> 6.1.0'
6
- gem 'activesupport', '~> 6.1.0'
7
- end
8
-
9
3
  appraise 'rails-7.1' do
10
4
  gem 'activejob', '~> 7.1.0'
11
5
  gem 'activerecord', '~> 7.1.0'
12
6
  gem 'activesupport', '~> 7.1.0'
13
7
  end
8
+
9
+ appraise 'rails-7.2' do
10
+ gem 'activejob', '~> 7.2.0'
11
+ gem 'activerecord', '~> 7.2.0'
12
+ gem 'activesupport', '~> 7.2.0'
13
+ end
14
+
15
+ appraise 'rails-8.0' do
16
+ gem 'activejob', '~> 8.0.0'
17
+ gem 'activerecord', '~> 8.0.0'
18
+ gem 'activesupport', '~> 8.0.0'
19
+ end
20
+
21
+ appraise 'rails-8.1' do
22
+ gem 'activejob', '~> 8.1.0'
23
+ gem 'activerecord', '~> 8.1.0'
24
+ gem 'activesupport', '~> 8.1.0'
25
+ end
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  * TODO: Replace this bullet point with an actual description of a change.
4
4
 
5
+ ### 3.1.0 (23 October 2025)
6
+
7
+ * Dropped Reek ([#24](https://github.com/hausgold/grape-jwt-authentication/pull/24))
8
+ * Added support for Rails 8.1 ([#25](https://github.com/hausgold/grape-jwt-authentication/pull/25))
9
+ * Switched from `ActiveSupport::Configurable` to a custom implementation based
10
+ on `ActiveSupport::OrderedOptions` ([#26](https://github.com/hausgold/grape-jwt-authentication/pull/26))
11
+
12
+ ### 3.0.0 (28 June 2025)
13
+
14
+ * Corrected some RuboCop glitches ([#21](https://github.com/hausgold/grape-jwt-authentication/pull/21))
15
+ * Drop Ruby 2 and end of life Rails (<7.1) ([#22](https://github.com/hausgold/grape-jwt-authentication/pull/22))
16
+
5
17
  ### 2.8.1 (21 May 2025)
6
18
 
7
19
  * Corrected some RuboCop glitches ([#19](https://github.com/hausgold/grape-jwt-authentication/pull/19))
data/Dockerfile CHANGED
@@ -1,8 +1,8 @@
1
- FROM hausgold/ruby:2.7
1
+ FROM hausgold/ruby:3.2
2
2
  LABEL org.opencontainers.image.authors="containers@hausgold.de"
3
3
 
4
4
  # Update system gem
5
- RUN gem update --system '3.4.22'
5
+ RUN gem update --system '3.6.9'
6
6
 
7
7
  # Install system packages and the latest bundler
8
8
  RUN apt-get update -yqqq && \
@@ -11,7 +11,7 @@ RUN apt-get update -yqqq && \
11
11
  ca-certificates \
12
12
  bash-completion inotify-tools && \
13
13
  echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && /usr/sbin/locale-gen && \
14
- gem install bundler -v '~> 2.4.22' --no-document --no-prerelease
14
+ gem install bundler -v '~> 2.6.9' --no-document --no-prerelease
15
15
 
16
16
  # Add new web user
17
17
  RUN mkdir /app && \
data/Gemfile CHANGED
@@ -9,12 +9,12 @@ gemspec
9
9
 
10
10
  # Development dependencies
11
11
  gem 'appraisal', '~> 2.4'
12
- gem 'bundler', '~> 2.3'
13
- gem 'countless', '~> 1.1'
12
+ gem 'bundler', '~> 2.6'
13
+ gem 'countless', '~> 2.2'
14
14
  gem 'guard-rspec', '~> 4.7'
15
15
  gem 'rack', '~> 2.2'
16
16
  gem 'rack-test', '~> 2.0'
17
- gem 'railties', '>= 6.1'
17
+ gem 'railties', '>= 7.1'
18
18
  gem 'rake', '~> 13.0'
19
19
  gem 'rspec', '~> 3.12'
20
20
  gem 'rubocop'
data/Makefile CHANGED
@@ -117,7 +117,7 @@ test-style: \
117
117
  test-style-ruby:
118
118
  # Run the static code analyzer (rubocop)
119
119
  @$(call run-shell,$(BUNDLE) exec $(RUBOCOP) -a \
120
- || ($(TEST) $$($(RUBY_VERSION)) != '2.7' && true))
120
+ || ($(TEST) $$($(RUBY_VERSION)) != '3.2' && true))
121
121
 
122
122
  clean:
123
123
  # Clean the dependencies
data/docker-compose.yml CHANGED
@@ -1,4 +1,3 @@
1
- version: "3"
2
1
  services:
3
2
  test:
4
3
  build: .
@@ -3,12 +3,12 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.4"
6
- gem "bundler", "~> 2.3"
7
- gem "countless", "~> 1.1"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
8
  gem "guard-rspec", "~> 4.7"
9
9
  gem "rack", "~> 2.2"
10
10
  gem "rack-test", "~> 2.0"
11
- gem "railties", ">= 6.1"
11
+ gem "railties", ">= 7.1"
12
12
  gem "rake", "~> 13.0"
13
13
  gem "rspec", "~> 3.12"
14
14
  gem "rubocop"
@@ -0,0 +1,27 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "guard-rspec", "~> 4.7"
9
+ gem "rack", "~> 2.2"
10
+ gem "rack-test", "~> 2.0"
11
+ gem "railties", ">= 7.1"
12
+ gem "rake", "~> 13.0"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rubocop"
15
+ gem "rubocop-rails"
16
+ gem "rubocop-rspec"
17
+ gem "simplecov", ">= 0.22"
18
+ gem "timecop", ">= 0.9.6"
19
+ gem "vcr", "~> 6.0"
20
+ gem "webmock", "~> 3.18"
21
+ gem "yard", ">= 0.9.28"
22
+ gem "yard-activesupport-concern", ">= 0.0.1"
23
+ gem "activejob", "~> 7.2.0"
24
+ gem "activerecord", "~> 7.2.0"
25
+ gem "activesupport", "~> 7.2.0"
26
+
27
+ gemspec path: "../"
@@ -0,0 +1,27 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "guard-rspec", "~> 4.7"
9
+ gem "rack", "~> 2.2"
10
+ gem "rack-test", "~> 2.0"
11
+ gem "railties", ">= 7.1"
12
+ gem "rake", "~> 13.0"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rubocop"
15
+ gem "rubocop-rails"
16
+ gem "rubocop-rspec"
17
+ gem "simplecov", ">= 0.22"
18
+ gem "timecop", ">= 0.9.6"
19
+ gem "vcr", "~> 6.0"
20
+ gem "webmock", "~> 3.18"
21
+ gem "yard", ">= 0.9.28"
22
+ gem "yard-activesupport-concern", ">= 0.0.1"
23
+ gem "activejob", "~> 8.0.0"
24
+ gem "activerecord", "~> 8.0.0"
25
+ gem "activesupport", "~> 8.0.0"
26
+
27
+ gemspec path: "../"
@@ -0,0 +1,27 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "guard-rspec", "~> 4.7"
9
+ gem "rack", "~> 2.2"
10
+ gem "rack-test", "~> 2.0"
11
+ gem "railties", ">= 7.1"
12
+ gem "rake", "~> 13.0"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rubocop"
15
+ gem "rubocop-rails"
16
+ gem "rubocop-rspec"
17
+ gem "simplecov", ">= 0.22"
18
+ gem "timecop", ">= 0.9.6"
19
+ gem "vcr", "~> 6.0"
20
+ gem "webmock", "~> 3.18"
21
+ gem "yard", ">= 0.9.28"
22
+ gem "yard-activesupport-concern", ">= 0.0.1"
23
+ gem "activejob", "~> 8.1.0"
24
+ gem "activerecord", "~> 8.1.0"
25
+ gem "activesupport", "~> 8.1.0"
26
+
27
+ gemspec path: "../"
@@ -31,14 +31,14 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.required_ruby_version = '>= 2.7'
34
+ spec.required_ruby_version = '>= 3.2'
35
35
 
36
- spec.add_dependency 'activesupport', '>= 6.1'
36
+ spec.add_dependency 'activesupport', '>= 7.1'
37
37
  spec.add_dependency 'grape', '>= 1.0', '< 3.0'
38
38
  spec.add_dependency 'httparty', '>= 0.21'
39
39
  spec.add_dependency 'jwt', '~> 2.6'
40
- spec.add_dependency 'keyless', '~> 1.6'
41
- spec.add_dependency 'mutex_m', '~> 0.3.0'
40
+ spec.add_dependency 'keyless', '~> 2.1'
41
+ spec.add_dependency 'mutex_m', '>= 0.3'
42
42
  spec.add_dependency 'recursive-open-struct', '~> 2.0'
43
43
  spec.add_dependency 'zeitwerk', '~> 2.6'
44
44
  end
@@ -4,8 +4,46 @@ module Grape
4
4
  module Jwt
5
5
  module Authentication
6
6
  # The configuration for the Grape JWT authentication concern.
7
- class Configuration
8
- include ActiveSupport::Configurable
7
+ class Configuration < ActiveSupport::OrderedOptions
8
+ # Track our configurations settings (+Symbol+ keys) and their defaults
9
+ # as lazy-loaded +Proc+'s values
10
+ class_attribute :defaults,
11
+ instance_reader: true,
12
+ instance_writer: false,
13
+ instance_predicate: false,
14
+ default: {}
15
+
16
+ # Create a new +Configuration+ instance with all settings populated
17
+ # with their respective defaults.
18
+ #
19
+ # @param args [Hash{Symbol => Mixed}] additional settings which
20
+ # overwrite the defaults
21
+ # @return [Configuration] the new configuration instance
22
+ def initialize(**args)
23
+ super()
24
+ defaults.each { |key, default| self[key] = instance_exec(&default) }
25
+ merge!(**args)
26
+ end
27
+
28
+ # A simple DSL method to define new configuration accessors/settings
29
+ # with their defaults. The defaults can be retrieved with
30
+ # +Configuration.defaults+ or +Configuration.new.defaults+.
31
+ #
32
+ # @param name [Symbol, String] the name of the configuration
33
+ # accessor/setting
34
+ # @param default [Mixed, nil] a non-lazy-loaded static value, serving
35
+ # as a default value for the setting
36
+ # @param block [Proc] when given, the default value will be lazy-loaded
37
+ # (result of the Proc)
38
+ def self.config_accessor(name, default = nil, &block)
39
+ # Save the given configuration accessor default value
40
+ defaults[name.to_sym] = block || -> { default }
41
+
42
+ # Compile reader/writer methods so we don't have to go through
43
+ # +ActiveSupport::OrderedOptions#method_missing+.
44
+ define_method(name) { self[name] }
45
+ define_method("#{name}=") { |value| self[name] = value }
46
+ end
9
47
 
10
48
  # The authenticator function which must be defined by the user to
11
49
  # verify the given JSON Web Token. Here comes all your logic to lookup
@@ -17,7 +17,7 @@ module Grape
17
17
 
18
18
  # A generic JWT part, the full token contains three parts
19
19
  # separated by a period.
20
- JWT_PART_REGEX = /([a-zA-Z0-9\-_]+)?/.freeze
20
+ JWT_PART_REGEX = /([a-zA-Z0-9\-_]+)?/
21
21
 
22
22
  # A common JWT validation regex which meets the RFC specs.
23
23
  JWT_REGEX = Regexp.new("^#{([JWT_PART_REGEX] * 3).join('\.')}$").freeze
@@ -102,8 +102,6 @@ module Grape
102
102
  # interface.
103
103
  #
104
104
  # @param env [Hash{String => Mixed}] the Rack environment
105
- # because thats the auth handling core
106
- # :reek:TooManyStatements because reek counts exception
107
105
  def call(env)
108
106
  # Unfortunately Grape's middleware stack orders the error
109
107
  # handling higher than the formatter. So when a error is
@@ -5,7 +5,7 @@ module Grape
5
5
  # The gem version details.
6
6
  module Authentication
7
7
  # The version of the +grape-jwt-authentication+ gem
8
- VERSION = '2.8.1'
8
+ VERSION = '3.1.0'
9
9
 
10
10
  class << self
11
11
  # Returns the version of gem as a string.
@@ -4,8 +4,9 @@ require 'zeitwerk'
4
4
  require 'logger'
5
5
  require 'active_support'
6
6
  require 'active_support/concern'
7
- require 'active_support/configurable'
8
7
  require 'active_support/cache'
8
+ require 'active_support/ordered_options'
9
+ require 'active_support/core_ext/class/attribute'
9
10
  require 'active_support/core_ext/hash'
10
11
  require 'active_support/time'
11
12
  require 'active_support/time_with_zone'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-jwt-authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Mayer
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-05-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '6.1'
18
+ version: '7.1'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '6.1'
25
+ version: '7.1'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: grape
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -78,28 +77,28 @@ dependencies:
78
77
  requirements:
79
78
  - - "~>"
80
79
  - !ruby/object:Gem::Version
81
- version: '1.6'
80
+ version: '2.1'
82
81
  type: :runtime
83
82
  prerelease: false
84
83
  version_requirements: !ruby/object:Gem::Requirement
85
84
  requirements:
86
85
  - - "~>"
87
86
  - !ruby/object:Gem::Version
88
- version: '1.6'
87
+ version: '2.1'
89
88
  - !ruby/object:Gem::Dependency
90
89
  name: mutex_m
91
90
  requirement: !ruby/object:Gem::Requirement
92
91
  requirements:
93
- - - "~>"
92
+ - - ">="
94
93
  - !ruby/object:Gem::Version
95
- version: 0.3.0
94
+ version: '0.3'
96
95
  type: :runtime
97
96
  prerelease: false
98
97
  version_requirements: !ruby/object:Gem::Requirement
99
98
  requirements:
100
- - - "~>"
99
+ - - ">="
101
100
  - !ruby/object:Gem::Version
102
- version: 0.3.0
101
+ version: '0.3'
103
102
  - !ruby/object:Gem::Dependency
104
103
  name: recursive-open-struct
105
104
  requirement: !ruby/object:Gem::Requirement
@@ -163,13 +162,15 @@ files:
163
162
  - docker-compose.yml
164
163
  - gemfiles/rails_6.1.gemfile
165
164
  - gemfiles/rails_7.1.gemfile
165
+ - gemfiles/rails_7.2.gemfile
166
+ - gemfiles/rails_8.0.gemfile
167
+ - gemfiles/rails_8.1.gemfile
166
168
  - grape-jwt-authentication.gemspec
167
169
  - lib/grape/jwt/authentication.rb
168
170
  - lib/grape/jwt/authentication/configuration.rb
169
171
  - lib/grape/jwt/authentication/extensions/dependencies.rb
170
172
  - lib/grape/jwt/authentication/jwt_handler.rb
171
173
  - lib/grape/jwt/authentication/version.rb
172
- homepage:
173
174
  licenses:
174
175
  - MIT
175
176
  metadata:
@@ -178,7 +179,6 @@ metadata:
178
179
  changelog_uri: https://github.com/hausgold/grape-jwt-authentication/blob/master/CHANGELOG.md
179
180
  bug_tracker_uri: https://github.com/hausgold/grape-jwt-authentication/issues
180
181
  documentation_uri: https://www.rubydoc.info/gems/grape-jwt-authentication
181
- post_install_message:
182
182
  rdoc_options: []
183
183
  require_paths:
184
184
  - lib
@@ -186,15 +186,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - ">="
188
188
  - !ruby/object:Gem::Version
189
- version: '2.7'
189
+ version: '3.2'
190
190
  required_rubygems_version: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  requirements: []
196
- rubygems_version: 3.4.22
197
- signing_key:
196
+ rubygems_version: 3.6.9
198
197
  specification_version: 4
199
198
  summary: A reusable Grape JWT authentication concern
200
199
  test_files: []