grape-jwt-authentication 2.0.4 → 2.1.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: c126007f446b7d7f10daf0885215c0b16178dbd1d69e25ab5fe9018543837bf1
4
- data.tar.gz: 573da54a3db4806eae9a269ad473e2471ee121684b4bf1508aa384b251d0ee18
3
+ metadata.gz: a76b78814c21de200efd81a5b97a2032909f0dc67cb702562a814abb250986ab
4
+ data.tar.gz: dc5c5536b5d5d445ae8391d7787e41858c178e200fc6cdf41fe8cb1349b7fa77
5
5
  SHA512:
6
- metadata.gz: 12f8f4ae5c3fb57ab2a9bd6eddeb24386912cd072373ed6da7ebbc314e08ecc52ba14ac264abacee4db926ad875747baaab583b66c3e2da26a1188707f724776
7
- data.tar.gz: b20247d73f3d57ec3bddc780fe5a41dd77eca18011df859df6028bc1afb737053ef8d8f9d419a5e672ed0f908361488e6884e4cf3b8ae26e31d332f4e45e019c
6
+ metadata.gz: 4cb2b1ff597b9bfee4947d57a5c1ad0f0b1123b298a5675d78d761786ea2eb33cdb4b199d23e72e1fa41b72dc708b2d6149d3150bc5e10d9544313943e34203e
7
+ data.tar.gz: 4fc142b1b6519a2a4fa0f1ba5895fd929bfca37ff26a1ad3de2096b23241f1d846710a0f3abfdb3f0a6e020300c6728f9db3686f0d0887f20e5c2ae3f480e973
@@ -9,16 +9,17 @@ concurrency:
9
9
  jobs:
10
10
  docs:
11
11
  name: Build gem documentation
12
- runs-on: ubuntu-20.04
12
+ runs-on: ubuntu-22.04
13
13
  timeout-minutes: 5
14
14
  steps:
15
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v3
16
16
 
17
17
  - name: Install the correct Ruby version
18
18
  uses: ruby/setup-ruby@v1
19
19
  with:
20
20
  ruby-version: 2.5
21
21
  bundler-cache: true
22
+ rubygems: '3.3.26'
22
23
 
23
24
  - name: Prepare the virtual environment
24
25
  uses: hausgold/actions/ci@master
@@ -12,21 +12,25 @@ concurrency:
12
12
 
13
13
  jobs:
14
14
  test:
15
- name: 'Test the gem (Ruby ${{ matrix.ruby }})'
16
- runs-on: ubuntu-20.04
15
+ name: 'Test the gem (Ruby ${{ matrix.ruby }}, Rails ${{ matrix.rails }})'
16
+ runs-on: ubuntu-22.04
17
17
  timeout-minutes: 5
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby: [2.4, 2.5, 2.6]
21
+ ruby: ['2.5', '2.7']
22
+ rails: ['5.2']
23
+ env:
24
+ BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
22
25
  steps:
23
- - uses: actions/checkout@v2
26
+ - uses: actions/checkout@v3
24
27
 
25
28
  - name: Install the correct Ruby version
26
29
  uses: ruby/setup-ruby@v1
27
30
  with:
28
31
  ruby-version: ${{ matrix.ruby }}
29
32
  bundler-cache: true
33
+ rubygems: '3.3.26'
30
34
 
31
35
  - name: Prepare the virtual environment
32
36
  uses: hausgold/actions/ci@master
@@ -43,7 +47,7 @@ jobs:
43
47
 
44
48
  trigger-docs:
45
49
  name: Trigger the documentation upload
46
- runs-on: ubuntu-20.04
50
+ runs-on: ubuntu-22.04
47
51
  timeout-minutes: 2
48
52
  needs: test
49
53
  if: github.ref == 'refs/heads/master'
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
+ --backtrace
2
+ --force-color
1
3
  --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml CHANGED
@@ -1,14 +1,19 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-rails
2
4
 
3
5
  Rails:
4
6
  Enabled: true
5
7
 
6
- Documentation:
8
+ Style/Documentation:
7
9
  Enabled: true
8
10
 
9
11
  AllCops:
12
+ NewCops: enable
13
+ SuggestExtensions: false
10
14
  DisplayCopNames: true
11
15
  TargetRubyVersion: 2.5
16
+ TargetRailsVersion: 5.2
12
17
  Exclude:
13
18
  - bin/**/*
14
19
  - vendor/**/*
@@ -23,6 +28,14 @@ Metrics/BlockLength:
23
28
  - '**/*.rake'
24
29
  - doc/**/*.rb
25
30
 
31
+ # MFA is not yet enabled for our gems yet.
32
+ Gemspec/RequireMFA:
33
+ Enabled: false
34
+
35
+ # We stay with the original Ruby Style Guide recommendation.
36
+ Layout/LineLength:
37
+ Max: 80
38
+
26
39
  # Document all the things.
27
40
  Style/DocumentationMethod:
28
41
  Enabled: true
@@ -51,3 +64,7 @@ RSpec/FilePath:
51
64
  # Because we just implemented the ActiveRecord API.
52
65
  Rails/SkipsModelValidations:
53
66
  Enabled: false
67
+
68
+ # We highly depend on memoized helpers across the specs.
69
+ RSpec/MultipleMemoizedHelpers:
70
+ Enabled: false
data/.simplecov CHANGED
@@ -1,3 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov-html'
4
+ require 'simplecov_json_formatter'
5
+
6
+ SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(
7
+ [
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ SimpleCov::Formatter::JSONFormatter
10
+ ]
11
+ )
12
+
1
13
  SimpleCov.start 'test_frameworks' do
2
14
  add_filter '/vendor/bundle/'
3
15
  end
data/Appraisals ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise 'rails-5.2' do
4
+ gem 'activejob', '~> 5.2.0'
5
+ gem 'activerecord', '~> 5.2.0'
6
+ gem 'activesupport', '~> 5.2.0'
7
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ### 2.1.0
2
+
3
+ * Bundler >= 2.3 is from now on required as minimal version (#9)
4
+ * Dropped support for Ruby < 2.5 (#9)
5
+ * Dropped support for Rails < 5.2 (#9)
6
+ * Updated all development/runtime gems to their latest
7
+ Ruby 2.5 compatible version (#9)
8
+
1
9
  ### 2.0.4
2
10
 
3
11
  * Migrated to Github Actions
data/Dockerfile CHANGED
@@ -2,7 +2,7 @@ FROM hausgold/ruby:2.5
2
2
  MAINTAINER Hermann Mayer <hermann.mayer@hausgold.de>
3
3
 
4
4
  # Update system gem
5
- RUN gem update --system
5
+ RUN gem update --system '3.3.26'
6
6
 
7
7
  # Install system packages and the latest bundler
8
8
  RUN apt-get update -yqqq && \
@@ -11,8 +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.0' --no-document --no-prerelease && \
15
- gem install bundler -v '~> 1.0' --no-document --no-prerelease
14
+ gem install bundler -v '~> 2.3.0' --no-document --no-prerelease
16
15
 
17
16
  # Add new web user
18
17
  RUN mkdir /app && \
data/Envfile CHANGED
@@ -1,6 +1,3 @@
1
1
  LANG=en_US.UTF-8
2
2
  LANGUAGE=en_US.UTF-8
3
3
  LC_ALL=en_US.UTF-8
4
-
5
- # Just fix this, so Appraisals with Rails 4 are working fine
6
- BUNDLER_VERSION=1.17.3
data/Guardfile ADDED
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # A sample Guardfile
4
+ # More info at https://github.com/guard/guard#readme
5
+
6
+ ## Uncomment and set this to only include directories you want to watch
7
+ (directories %w[lib spec]).select do |d|
8
+ if Dir.exist?(d)
9
+ d
10
+ else
11
+ UI.warning("Directory #{d} does not exist")
12
+ end
13
+ end
14
+
15
+ ## Note: if you are using the `directories` clause above and you are not
16
+ ## watching the project directory ('.'), then you will want to move
17
+ ## the Guardfile to a watched dir and symlink it back, e.g.
18
+ #
19
+ # $ mkdir config
20
+ # $ mv Guardfile config/
21
+ # $ ln -s config/Guardfile .
22
+ #
23
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
24
+
25
+ # NOTE: The cmd option is now required due to the increasing number of ways
26
+ # rspec may be run, below are examples of the most common uses.
27
+ # * bundler: 'bundle exec rspec'
28
+ # * bundler binstubs: 'bin/rspec'
29
+ # * spring: 'bin/rspec' (This will use spring if running and you have
30
+ # installed the spring binstubs per the docs)
31
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
32
+ # * 'just' rspec: 'rspec'
33
+
34
+ guard :rspec, cmd: 'bundle exec rspec' do
35
+ watch('spec/spec_helper.rb') { 'spec' }
36
+ watch(%r{^lib/grape/jwt/authentication.rb}) { 'spec' }
37
+ watch(%r{^spec/.+_spec\.rb$})
38
+ watch(%r{^lib/grape/jwt/authentication/([^\\]+)\.rb$}) do |m|
39
+ "spec/grape/jwt/authentication/#{m[1]}_spec.rb"
40
+ end
41
+ watch(%r{^lib/grape/jwt/authentication/([^\\]+)/(.*)\.rb$}) do |m|
42
+ "spec/grape/jwt/authentication/#{m[1]}/#{m[2]}_spec.rb"
43
+ end
44
+ end
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2017 HAUSGOLD | talocasa GmbH
3
+ Copyright (c) 2023 HAUSGOLD | talocasa GmbH
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/Makefile CHANGED
@@ -9,6 +9,7 @@ SHELL := bash
9
9
  # Environment switches
10
10
  MAKE_ENV ?= docker
11
11
  COMPOSE_RUN_SHELL_FLAGS ?= --rm
12
+ BASH_RUN_SHELL_FLAGS ?=
12
13
 
13
14
  # Directories
14
15
  VENDOR_DIR ?= vendor/bundle
@@ -25,9 +26,12 @@ RM ?= rm
25
26
  XARGS ?= xargs
26
27
 
27
28
  # Container binaries
29
+ APPRAISAL ?= appraisal
28
30
  BUNDLE ?= bundle
29
31
  GEM ?= gem
32
+ GUARD ?= guard
30
33
  RAKE ?= rake
34
+ RSPEC ?= rspec
31
35
  RUBOCOP ?= rubocop
32
36
  YARD ?= yard
33
37
 
@@ -38,7 +42,8 @@ define run-shell
38
42
  $(COMPOSE) run $(COMPOSE_RUN_SHELL_FLAGS) \
39
43
  -e LANG=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 \
40
44
  -e HOME=/home/web -e BUNDLE_APP_CONFIG=/app/.bundle \
41
- -u `$(ID) -u` test bash -c 'sleep 0.1; echo; $(1)'
45
+ -u `$(ID) -u` test \
46
+ bash $(BASH_RUN_SHELL_FLAGS) -c 'sleep 0.1; echo; $(1)'
42
47
  endef
43
48
  else ifeq ($(MAKE_ENV),baremetal)
44
49
  define run-shell
@@ -55,6 +60,7 @@ all:
55
60
  #
56
61
  # test Run the whole test suite
57
62
  # test-style Test the code styles
63
+ # watch Watch for code changes and rerun the test suite
58
64
  #
59
65
  # docs Generate the Ruby documentation of the library
60
66
  # stats Print the code statistics (library and test suite)
@@ -64,12 +70,24 @@ all:
64
70
  # shell Run an interactive shell on the container
65
71
  # shell-irb Run an interactive IRB shell on the container
66
72
 
73
+ .interactive:
74
+ @$(eval BASH_RUN_SHELL_FLAGS = --login)
75
+
67
76
  install:
68
77
  # Install the dependencies
69
78
  @$(MKDIR) -p $(VENDOR_DIR)
70
79
  @$(call run-shell,$(BUNDLE) check || $(BUNDLE) install --path $(VENDOR_DIR))
71
- @$(call run-shell,GEM_HOME=vendor/bundle/ruby/$${RUBY_MAJOR}.0 \
72
- $(GEM) install bundler -v "~> 1.0")
80
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) install)
81
+
82
+ update:
83
+ # Install the dependencies
84
+ @$(MKDIR) -p $(VENDOR_DIR)
85
+ @$(call run-shell,$(BUNDLE) update)
86
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) update)
87
+
88
+ watch: install .interactive
89
+ # Watch for code changes and rerun the test suite
90
+ @$(call run-shell,$(BUNDLE) exec $(GUARD))
73
91
 
74
92
  test: \
75
93
  test-specs \
@@ -79,6 +97,11 @@ test-specs:
79
97
  # Run the whole test suite
80
98
  @$(call run-shell,$(BUNDLE) exec $(RAKE) stats spec)
81
99
 
100
+ $(TEST_GEMFILES): GEMFILE=$(@:test-%=%)
101
+ $(TEST_GEMFILES):
102
+ # Run the whole test suite ($(GEMFILE))
103
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RSPEC))
104
+
82
105
  test-style: \
83
106
  test-style-ruby
84
107
 
@@ -90,8 +113,8 @@ clean:
90
113
  # Clean the dependencies
91
114
  @$(RM) -rf $(VENDOR_DIR)
92
115
  @$(RM) -rf $(VENDOR_DIR)/Gemfile.lock
93
- @$(RM) -rf pkg
94
- @$(RM) -rf coverage
116
+ @$(RM) -rf .bundle .yardoc coverage pkg Gemfile.lock doc/api \
117
+ .rspec_status
95
118
 
96
119
  clean-containers:
97
120
  # Clean running containers
@@ -102,7 +125,7 @@ endif
102
125
  clean-images:
103
126
  # Clean build images
104
127
  ifeq ($(MAKE_ENV),docker)
105
- @-$(DOCKER) images | $(GREP) rimless \
128
+ @-$(DOCKER) images | $(GREP) $(shell basename "`pwd`") \
106
129
  | $(AWK) '{ print $$3 }' \
107
130
  | $(XARGS) -rn1 $(DOCKER) rmi -f
108
131
  endif
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  This gem is dedicated to easily integrate a JWT authentication to your
10
10
  [Grape](https://github.com/ruby-grape/grape) API. The real authentication
11
- functionality must be provided by the user and this makes this gem highy
11
+ functionality must be provided by the user and this makes this gem highly
12
12
  flexible on the JWT verification level.
13
13
 
14
14
  - [Installation](#installation)
@@ -154,7 +154,7 @@ end
154
154
 
155
155
  #### Failed authentication handling
156
156
 
157
- When the client sends a corrected formatted JSON Web Token with the Bearer
157
+ When the client sends a correctly formatted JSON Web Token with the Bearer
158
158
  authentication scheme within the `Authorization` header and your authenticator
159
159
  fails for some reason (token claims, wrong audience, bad subject, expired
160
160
  token, wrong cryptographic signing etc), this function is called to handle the
@@ -175,8 +175,8 @@ end
175
175
  #### RSA public key helper
176
176
 
177
177
  We provide a straightforward solution to deal with the provision of RSA public
178
- keys. Somethimes you want to distribute them by file to each machine and have
179
- a local access, and somethimes you provide an endpoint on your identity
178
+ keys. Sometimes you want to distribute them by file to each machine and have
179
+ a local access, and sometimes you provide an endpoint on your identity
180
180
  provider to fetch the RSA public key via HTTP/HTTPS. The `RsaPublicKey` class
181
181
  helps you to fulfill this task easily.
182
182
 
data/Rakefile CHANGED
@@ -2,71 +2,18 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
- require 'rails/code_statistics'
6
- require 'pp'
5
+ require 'countless/rake_tasks'
7
6
 
8
7
  RSpec::Core::RakeTask.new(:spec)
9
8
 
10
9
  task default: :spec
11
10
 
12
- # Load some railties tasks
13
- load 'rails/tasks/statistics.rake'
14
- load 'rails/tasks/annotations.rake'
15
-
16
- # Clear the default statistics directory constant
17
- #
18
- # rubocop:disable Style/MutableConstant because we define it
19
- Object.send(:remove_const, :STATS_DIRECTORIES)
20
- ::STATS_DIRECTORIES = []
21
- # rubocop:enable Style/MutableConstant
22
-
23
- # Monkey patch the Rails +CodeStatistics+ class to support configurable
24
- # patterns per path. This is reuqired to support top-level only file matches.
25
- class CodeStatistics
26
- DEFAULT_PATTERN = /^(?!\.).*?\.(rb|js|coffee|rake)$/.freeze
27
-
28
- # Pass the possible +pattern+ argument down to the
29
- # +calculate_directory_statistics+ method call.
30
- def calculate_statistics
31
- Hash[@pairs.map do |pair|
32
- [pair.first, calculate_directory_statistics(*pair[1..-1])]
33
- end]
34
- end
35
-
36
- # Match the pattern against the individual file name and the relative file
37
- # path. This allows top-level only matches.
38
- def calculate_directory_statistics(directory, pattern = DEFAULT_PATTERN)
39
- stats = CodeStatisticsCalculator.new
40
-
41
- Dir.foreach(directory) do |file_name|
42
- path = "#{directory}/#{file_name}"
43
-
44
- if File.directory?(path) && (/^\./ !~ file_name)
45
- stats.add(calculate_directory_statistics(path, pattern))
46
- elsif file_name =~ pattern || path =~ pattern
47
- stats.add_by_file_path(path)
48
- end
49
- end
50
-
51
- stats
52
- end
53
- end
54
-
55
11
  # Configure all code statistics directories
56
- vendors = [
57
- [:unshift, 'Top-levels', 'lib'],
58
- [:unshift, 'Top-levels specs', 'spec/grape']
59
- ].reverse
60
-
61
- vendors.each do |method, type, dir, pattern|
62
- ::STATS_DIRECTORIES.send(method, [type, dir, pattern].compact)
63
- ::CodeStatistics::TEST_TYPES << type if type.include? 'specs'
64
- end
65
-
66
- # Setup annotations
67
- ENV['SOURCE_ANNOTATION_DIRECTORIES'] = 'spec,doc'
68
-
69
- desc 'Enumerate all annotations'
70
- task :notes do
71
- SourceAnnotationExtractor.enumerate '@?OPTIMIZE|@?FIXME|@?TODO', tag: true
12
+ Countless.configure do |config|
13
+ config.stats_base_directories = [
14
+ { name: 'Top-levels',
15
+ pattern: 'lib/**/*.rb' },
16
+ { name: 'Top-levels specs', test: true,
17
+ pattern: 'spec/grape/**/*.rb' }
18
+ ]
72
19
  end
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activejob", "~> 5.2.0"
6
+ gem "activerecord", "~> 5.2.0"
7
+ gem "activesupport", "~> 5.2.0"
8
+
9
+ gemspec path: "../"
@@ -5,41 +5,57 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'grape/jwt/authentication/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'grape-jwt-authentication'
9
- spec.version = Grape::Jwt::Authentication::VERSION
10
- spec.authors = ['Hermann Mayer']
11
- spec.email = ['hermann.mayer92@gmail.com']
8
+ spec.name = 'grape-jwt-authentication'
9
+ spec.version = Grape::Jwt::Authentication::VERSION
10
+ spec.authors = ['Hermann Mayer']
11
+ spec.email = ['hermann.mayer92@gmail.com']
12
12
 
13
- spec.summary = 'A reusable Grape JWT authentication concern'
14
- spec.description = 'A reusable Grape JWT authentication concern'
15
- spec.homepage = 'https://github.com/hausgold/grape-jwt-authentication'
13
+ spec.license = 'MIT'
14
+ spec.summary = 'A reusable Grape JWT authentication concern'
15
+ spec.description = 'A reusable Grape JWT authentication concern'
16
+
17
+ base_uri = "https://github.com/hausgold/#{spec.name}"
18
+ spec.metadata = {
19
+ 'homepage_uri' => base_uri,
20
+ 'source_code_uri' => base_uri,
21
+ 'changelog_uri' => "#{base_uri}/blob/master/CHANGELOG.md",
22
+ 'bug_tracker_uri' => "#{base_uri}/issues",
23
+ 'documentation_uri' => "https://www.rubydoc.info/gems/#{spec.name}"
24
+ }
16
25
 
17
26
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
27
  f.match(%r{^(test|spec|features)/})
19
28
  end
20
- spec.bindir = 'exe'
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+
30
+ spec.bindir = 'exe'
31
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
32
  spec.require_paths = ['lib']
23
33
 
24
- spec.add_runtime_dependency 'activesupport', '>= 3.2.0'
34
+ spec.required_ruby_version = '>= 2.5'
35
+
36
+ spec.add_runtime_dependency 'activesupport', '>= 5.2'
25
37
  spec.add_runtime_dependency 'grape', '~> 1.0'
26
- spec.add_runtime_dependency 'httparty'
27
- spec.add_runtime_dependency 'jwt', '~> 2.1'
28
- spec.add_runtime_dependency 'keyless', '~> 1.0'
29
- spec.add_runtime_dependency 'recursive-open-struct', '~> 1.0'
30
-
31
- spec.add_development_dependency 'bundler', '>= 1.16', '< 3'
32
- spec.add_development_dependency 'rack', '~> 2.0'
33
- spec.add_development_dependency 'rack-test', '~> 0.8.2'
34
- spec.add_development_dependency 'railties', '>= 4.2.0', '< 6.1'
35
- spec.add_development_dependency 'rake', '~> 10.0'
36
- spec.add_development_dependency 'rspec', '~> 3.9'
37
- spec.add_development_dependency 'rubocop', '~> 0.63.1'
38
- spec.add_development_dependency 'rubocop-rspec', '~> 1.31'
39
- spec.add_development_dependency 'simplecov', '< 0.18'
40
- spec.add_development_dependency 'timecop', '~> 0.9.1'
41
- spec.add_development_dependency 'vcr', '~> 3.0'
42
- spec.add_development_dependency 'webmock', '~> 3.1'
43
- spec.add_development_dependency 'yard', '~> 0.9.18'
44
- spec.add_development_dependency 'yard-activesupport-concern', '~> 0.0.1'
38
+ spec.add_runtime_dependency 'httparty', '>= 0.21'
39
+ spec.add_runtime_dependency 'jwt', '~> 2.6'
40
+ spec.add_runtime_dependency 'keyless', '~> 1.1'
41
+ spec.add_runtime_dependency 'recursive-open-struct', '~> 1.1'
42
+
43
+ spec.add_development_dependency 'appraisal', '~> 2.4'
44
+ spec.add_development_dependency 'bundler', '~> 2.3'
45
+ spec.add_development_dependency 'countless', '~> 1.1'
46
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
47
+ spec.add_development_dependency 'rack', '~> 2.2'
48
+ spec.add_development_dependency 'rack-test', '~> 2.0'
49
+ spec.add_development_dependency 'railties', '>= 5.2'
50
+ spec.add_development_dependency 'rake', '~> 13.0'
51
+ spec.add_development_dependency 'rspec', '~> 3.12'
52
+ spec.add_development_dependency 'rubocop', '~> 1.28'
53
+ spec.add_development_dependency 'rubocop-rails', '~> 2.14'
54
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.10'
55
+ spec.add_development_dependency 'simplecov', '>= 0.22'
56
+ spec.add_development_dependency 'timecop', '>= 0.9.6'
57
+ spec.add_development_dependency 'vcr', '~> 6.0'
58
+ spec.add_development_dependency 'webmock', '~> 3.18'
59
+ spec.add_development_dependency 'yard', '>= 0.9.28'
60
+ spec.add_development_dependency 'yard-activesupport-concern', '>= 0.0.1'
45
61
  end
@@ -102,10 +102,8 @@ module Grape
102
102
  # interface.
103
103
  #
104
104
  # @param env [Hash{String => Mixed}] the Rack environment
105
- #
106
- # rubocop:disable Metrics/AbcSize because thats the auth handling core
105
+ # because thats the auth handling core
107
106
  # :reek:TooManyStatements because reek counts exception
108
- # handling as statements
109
107
  def call(env)
110
108
  # Unfortunately Grape's middleware stack orders the error
111
109
  # handling higher than the formatter. So when a error is
@@ -139,7 +137,6 @@ module Grape
139
137
  # Call the user defined failed authentication handler.
140
138
  failed_handler.call(token, @app)
141
139
  end
142
- # rubocop:enable Metrics/AbcSize
143
140
  end
144
141
  end
145
142
  end
@@ -2,8 +2,26 @@
2
2
 
3
3
  module Grape
4
4
  module Jwt
5
+ # The gem version details.
5
6
  module Authentication
6
- VERSION = '2.0.4'
7
+ # The version of the +grape-jwt-authentication+ gem
8
+ VERSION = '2.1.0'
9
+
10
+ class << self
11
+ # Returns the version of gem as a string.
12
+ #
13
+ # @return [String] the gem version as string
14
+ def version
15
+ VERSION
16
+ end
17
+
18
+ # Returns the version of the gem as a +Gem::Version+.
19
+ #
20
+ # @return [Gem::Version] the gem version as object
21
+ def gem_version
22
+ Gem::Version.new VERSION
23
+ end
24
+ end
7
25
  end
8
26
  end
9
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-jwt-authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Mayer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-15 00:00:00.000000000 Z
11
+ date: 2023-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.0
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.0
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: grape
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,262 +44,306 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '0.21'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '0.21'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jwt
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.1'
61
+ version: '2.6'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.1'
68
+ version: '2.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: keyless
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.0'
75
+ version: '1.1'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.0'
82
+ version: '1.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: recursive-open-struct
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.0'
89
+ version: '1.1'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '1.0'
96
+ version: '1.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: appraisal
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.4'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ">="
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.3'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
102
123
  - !ruby/object:Gem::Version
103
- version: '1.16'
104
- - - "<"
124
+ version: '2.3'
125
+ - !ruby/object:Gem::Dependency
126
+ name: countless
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
105
130
  - !ruby/object:Gem::Version
106
- version: '3'
131
+ version: '1.1'
107
132
  type: :development
108
133
  prerelease: false
109
134
  version_requirements: !ruby/object:Gem::Requirement
110
135
  requirements:
111
- - - ">="
136
+ - - "~>"
112
137
  - !ruby/object:Gem::Version
113
- version: '1.16'
114
- - - "<"
138
+ version: '1.1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: guard-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
115
144
  - !ruby/object:Gem::Version
116
- version: '3'
145
+ version: '4.7'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '4.7'
117
153
  - !ruby/object:Gem::Dependency
118
154
  name: rack
119
155
  requirement: !ruby/object:Gem::Requirement
120
156
  requirements:
121
157
  - - "~>"
122
158
  - !ruby/object:Gem::Version
123
- version: '2.0'
159
+ version: '2.2'
124
160
  type: :development
125
161
  prerelease: false
126
162
  version_requirements: !ruby/object:Gem::Requirement
127
163
  requirements:
128
164
  - - "~>"
129
165
  - !ruby/object:Gem::Version
130
- version: '2.0'
166
+ version: '2.2'
131
167
  - !ruby/object:Gem::Dependency
132
168
  name: rack-test
133
169
  requirement: !ruby/object:Gem::Requirement
134
170
  requirements:
135
171
  - - "~>"
136
172
  - !ruby/object:Gem::Version
137
- version: 0.8.2
173
+ version: '2.0'
138
174
  type: :development
139
175
  prerelease: false
140
176
  version_requirements: !ruby/object:Gem::Requirement
141
177
  requirements:
142
178
  - - "~>"
143
179
  - !ruby/object:Gem::Version
144
- version: 0.8.2
180
+ version: '2.0'
145
181
  - !ruby/object:Gem::Dependency
146
182
  name: railties
147
183
  requirement: !ruby/object:Gem::Requirement
148
184
  requirements:
149
185
  - - ">="
150
186
  - !ruby/object:Gem::Version
151
- version: 4.2.0
152
- - - "<"
153
- - !ruby/object:Gem::Version
154
- version: '6.1'
187
+ version: '5.2'
155
188
  type: :development
156
189
  prerelease: false
157
190
  version_requirements: !ruby/object:Gem::Requirement
158
191
  requirements:
159
192
  - - ">="
160
193
  - !ruby/object:Gem::Version
161
- version: 4.2.0
162
- - - "<"
163
- - !ruby/object:Gem::Version
164
- version: '6.1'
194
+ version: '5.2'
165
195
  - !ruby/object:Gem::Dependency
166
196
  name: rake
167
197
  requirement: !ruby/object:Gem::Requirement
168
198
  requirements:
169
199
  - - "~>"
170
200
  - !ruby/object:Gem::Version
171
- version: '10.0'
201
+ version: '13.0'
172
202
  type: :development
173
203
  prerelease: false
174
204
  version_requirements: !ruby/object:Gem::Requirement
175
205
  requirements:
176
206
  - - "~>"
177
207
  - !ruby/object:Gem::Version
178
- version: '10.0'
208
+ version: '13.0'
179
209
  - !ruby/object:Gem::Dependency
180
210
  name: rspec
181
211
  requirement: !ruby/object:Gem::Requirement
182
212
  requirements:
183
213
  - - "~>"
184
214
  - !ruby/object:Gem::Version
185
- version: '3.9'
215
+ version: '3.12'
186
216
  type: :development
187
217
  prerelease: false
188
218
  version_requirements: !ruby/object:Gem::Requirement
189
219
  requirements:
190
220
  - - "~>"
191
221
  - !ruby/object:Gem::Version
192
- version: '3.9'
222
+ version: '3.12'
193
223
  - !ruby/object:Gem::Dependency
194
224
  name: rubocop
195
225
  requirement: !ruby/object:Gem::Requirement
196
226
  requirements:
197
227
  - - "~>"
198
228
  - !ruby/object:Gem::Version
199
- version: 0.63.1
229
+ version: '1.28'
200
230
  type: :development
201
231
  prerelease: false
202
232
  version_requirements: !ruby/object:Gem::Requirement
203
233
  requirements:
204
234
  - - "~>"
205
235
  - !ruby/object:Gem::Version
206
- version: 0.63.1
236
+ version: '1.28'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rubocop-rails
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '2.14'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '2.14'
207
251
  - !ruby/object:Gem::Dependency
208
252
  name: rubocop-rspec
209
253
  requirement: !ruby/object:Gem::Requirement
210
254
  requirements:
211
255
  - - "~>"
212
256
  - !ruby/object:Gem::Version
213
- version: '1.31'
257
+ version: '2.10'
214
258
  type: :development
215
259
  prerelease: false
216
260
  version_requirements: !ruby/object:Gem::Requirement
217
261
  requirements:
218
262
  - - "~>"
219
263
  - !ruby/object:Gem::Version
220
- version: '1.31'
264
+ version: '2.10'
221
265
  - !ruby/object:Gem::Dependency
222
266
  name: simplecov
223
267
  requirement: !ruby/object:Gem::Requirement
224
268
  requirements:
225
- - - "<"
269
+ - - ">="
226
270
  - !ruby/object:Gem::Version
227
- version: '0.18'
271
+ version: '0.22'
228
272
  type: :development
229
273
  prerelease: false
230
274
  version_requirements: !ruby/object:Gem::Requirement
231
275
  requirements:
232
- - - "<"
276
+ - - ">="
233
277
  - !ruby/object:Gem::Version
234
- version: '0.18'
278
+ version: '0.22'
235
279
  - !ruby/object:Gem::Dependency
236
280
  name: timecop
237
281
  requirement: !ruby/object:Gem::Requirement
238
282
  requirements:
239
- - - "~>"
283
+ - - ">="
240
284
  - !ruby/object:Gem::Version
241
- version: 0.9.1
285
+ version: 0.9.6
242
286
  type: :development
243
287
  prerelease: false
244
288
  version_requirements: !ruby/object:Gem::Requirement
245
289
  requirements:
246
- - - "~>"
290
+ - - ">="
247
291
  - !ruby/object:Gem::Version
248
- version: 0.9.1
292
+ version: 0.9.6
249
293
  - !ruby/object:Gem::Dependency
250
294
  name: vcr
251
295
  requirement: !ruby/object:Gem::Requirement
252
296
  requirements:
253
297
  - - "~>"
254
298
  - !ruby/object:Gem::Version
255
- version: '3.0'
299
+ version: '6.0'
256
300
  type: :development
257
301
  prerelease: false
258
302
  version_requirements: !ruby/object:Gem::Requirement
259
303
  requirements:
260
304
  - - "~>"
261
305
  - !ruby/object:Gem::Version
262
- version: '3.0'
306
+ version: '6.0'
263
307
  - !ruby/object:Gem::Dependency
264
308
  name: webmock
265
309
  requirement: !ruby/object:Gem::Requirement
266
310
  requirements:
267
311
  - - "~>"
268
312
  - !ruby/object:Gem::Version
269
- version: '3.1'
313
+ version: '3.18'
270
314
  type: :development
271
315
  prerelease: false
272
316
  version_requirements: !ruby/object:Gem::Requirement
273
317
  requirements:
274
318
  - - "~>"
275
319
  - !ruby/object:Gem::Version
276
- version: '3.1'
320
+ version: '3.18'
277
321
  - !ruby/object:Gem::Dependency
278
322
  name: yard
279
323
  requirement: !ruby/object:Gem::Requirement
280
324
  requirements:
281
- - - "~>"
325
+ - - ">="
282
326
  - !ruby/object:Gem::Version
283
- version: 0.9.18
327
+ version: 0.9.28
284
328
  type: :development
285
329
  prerelease: false
286
330
  version_requirements: !ruby/object:Gem::Requirement
287
331
  requirements:
288
- - - "~>"
332
+ - - ">="
289
333
  - !ruby/object:Gem::Version
290
- version: 0.9.18
334
+ version: 0.9.28
291
335
  - !ruby/object:Gem::Dependency
292
336
  name: yard-activesupport-concern
293
337
  requirement: !ruby/object:Gem::Requirement
294
338
  requirements:
295
- - - "~>"
339
+ - - ">="
296
340
  - !ruby/object:Gem::Version
297
341
  version: 0.0.1
298
342
  type: :development
299
343
  prerelease: false
300
344
  version_requirements: !ruby/object:Gem::Requirement
301
345
  requirements:
302
- - - "~>"
346
+ - - ">="
303
347
  - !ruby/object:Gem::Version
304
348
  version: 0.0.1
305
349
  description: A reusable Grape JWT authentication concern
@@ -317,10 +361,12 @@ files:
317
361
  - ".rubocop.yml"
318
362
  - ".simplecov"
319
363
  - ".yardopts"
364
+ - Appraisals
320
365
  - CHANGELOG.md
321
366
  - Dockerfile
322
367
  - Envfile
323
368
  - Gemfile
369
+ - Guardfile
324
370
  - LICENSE
325
371
  - Makefile
326
372
  - README.md
@@ -332,15 +378,22 @@ files:
332
378
  - config/docker/.inputrc
333
379
  - doc/assets/project.svg
334
380
  - docker-compose.yml
381
+ - gemfiles/rails_5.2.gemfile
335
382
  - grape-jwt-authentication.gemspec
336
383
  - lib/grape/jwt/authentication.rb
337
384
  - lib/grape/jwt/authentication/configuration.rb
338
385
  - lib/grape/jwt/authentication/dependencies.rb
339
386
  - lib/grape/jwt/authentication/jwt_handler.rb
340
387
  - lib/grape/jwt/authentication/version.rb
341
- homepage: https://github.com/hausgold/grape-jwt-authentication
342
- licenses: []
343
- metadata: {}
388
+ homepage:
389
+ licenses:
390
+ - MIT
391
+ metadata:
392
+ homepage_uri: https://github.com/hausgold/grape-jwt-authentication
393
+ source_code_uri: https://github.com/hausgold/grape-jwt-authentication
394
+ changelog_uri: https://github.com/hausgold/grape-jwt-authentication/blob/master/CHANGELOG.md
395
+ bug_tracker_uri: https://github.com/hausgold/grape-jwt-authentication/issues
396
+ documentation_uri: https://www.rubydoc.info/gems/grape-jwt-authentication
344
397
  post_install_message:
345
398
  rdoc_options: []
346
399
  require_paths:
@@ -349,14 +402,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
349
402
  requirements:
350
403
  - - ">="
351
404
  - !ruby/object:Gem::Version
352
- version: '0'
405
+ version: '2.5'
353
406
  required_rubygems_version: !ruby/object:Gem::Requirement
354
407
  requirements:
355
408
  - - ">="
356
409
  - !ruby/object:Gem::Version
357
410
  version: '0'
358
411
  requirements: []
359
- rubygems_version: 3.2.16
412
+ rubygems_version: 3.3.8
360
413
  signing_key:
361
414
  specification_version: 4
362
415
  summary: A reusable Grape JWT authentication concern