grape-jwt-authentication 2.0.4 → 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 +4 -4
- data/.github/workflows/documentation.yml +3 -2
- data/.github/workflows/release.yml +47 -0
- data/.github/workflows/test.yml +9 -5
- data/.rspec +2 -2
- data/.rubocop.yml +19 -2
- data/.simplecov +12 -0
- data/Appraisals +7 -0
- data/CHANGELOG.md +16 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Dockerfile +2 -3
- data/Envfile +0 -3
- data/Guardfile +44 -0
- data/LICENSE +1 -1
- data/Makefile +29 -6
- data/README.md +25 -12
- data/Rakefile +8 -61
- data/gemfiles/rails_5.2.gemfile +9 -0
- data/grape-jwt-authentication.gemspec +45 -29
- data/lib/grape/jwt/authentication/jwt_handler.rb +1 -4
- data/lib/grape/jwt/authentication/version.rb +19 -1
- metadata +121 -66
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1a5a4a360cafde26473338f304b9ec569beb1c8ea0467e735ce08e489c33a86
|
4
|
+
data.tar.gz: 6a19583fd428e220057b9fcf761ca839a51d1c5bf46d7fcdb639679ed84fb3fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ff00b93b0bb0ce09c1d85bd17dcf4aa3c71549ea12a1c77e0d1f99e90d219137d0a8727675e5969fdba3812d3a4439c4ec7d0d24e796b264d137e073fa7cb62
|
7
|
+
data.tar.gz: f53b951cad8dc76b7838f70a60bd31838c2ab79101210fdb82d41de1f707559ad9b642656f4d54f8f8912673afe5a486ac1f7f73ac756cdb03c058ba1bb0f7b2
|
@@ -9,16 +9,17 @@ concurrency:
|
|
9
9
|
jobs:
|
10
10
|
docs:
|
11
11
|
name: Build gem documentation
|
12
|
-
runs-on: ubuntu-
|
12
|
+
runs-on: ubuntu-22.04
|
13
13
|
timeout-minutes: 5
|
14
14
|
steps:
|
15
|
-
- uses: actions/checkout@
|
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
|
@@ -0,0 +1,47 @@
|
|
1
|
+
name: Release
|
2
|
+
run-name: Release ${{ github.event.inputs.VERSION }}
|
3
|
+
|
4
|
+
on:
|
5
|
+
workflow_dispatch:
|
6
|
+
inputs:
|
7
|
+
VERSION:
|
8
|
+
description: The new version to release. (eg. `1.0.0`) Check the
|
9
|
+
changelog for the latest version.
|
10
|
+
|
11
|
+
concurrency:
|
12
|
+
group: '${{ github.event.inputs.VERSION }}'
|
13
|
+
cancel-in-progress: true
|
14
|
+
|
15
|
+
jobs:
|
16
|
+
docs:
|
17
|
+
name: Release the gem
|
18
|
+
runs-on: ubuntu-22.04
|
19
|
+
timeout-minutes: 5
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v3
|
22
|
+
|
23
|
+
- name: Install Ruby 2.5
|
24
|
+
uses: ruby/setup-ruby@v1
|
25
|
+
with:
|
26
|
+
ruby-version: 2.5
|
27
|
+
bundler-cache: true
|
28
|
+
rubygems: '3.3.26'
|
29
|
+
|
30
|
+
- name: Prepare the virtual environment
|
31
|
+
uses: hausgold/actions/ci@master
|
32
|
+
with:
|
33
|
+
clone_token: '${{ secrets.CLONE_TOKEN }}'
|
34
|
+
settings: '${{ github.repository }}'
|
35
|
+
target: ci/gem-test
|
36
|
+
|
37
|
+
- name: Switch to SSH remotes for the Git repository
|
38
|
+
run: git-ssh-remotes
|
39
|
+
|
40
|
+
- name: Enforce version '${{ github.event.inputs.VERSION }}'
|
41
|
+
run: set-gem-version '${{ github.event.inputs.VERSION }}'
|
42
|
+
|
43
|
+
- name: Prepare the Git release commit
|
44
|
+
run: git-release-commit '${{ github.event.inputs.VERSION }}'
|
45
|
+
|
46
|
+
- name: Push the release Git commit/tag and package to the registry
|
47
|
+
run: make release
|
data/.github/workflows/test.yml
CHANGED
@@ -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-
|
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.
|
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@
|
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-
|
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
data/.rubocop.yml
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
-
require:
|
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
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### next
|
2
|
+
|
3
|
+
* TODO: Replace this bullet point with an actual description of a change.
|
4
|
+
|
5
|
+
### 2.2.0
|
6
|
+
|
7
|
+
* Added support for Gem release automation
|
8
|
+
|
9
|
+
### 2.1.0
|
10
|
+
|
11
|
+
* Bundler >= 2.3 is from now on required as minimal version (#9)
|
12
|
+
* Dropped support for Ruby < 2.5 (#9)
|
13
|
+
* Dropped support for Rails < 5.2 (#9)
|
14
|
+
* Updated all development/runtime gems to their latest
|
15
|
+
Ruby 2.5 compatible version (#9)
|
16
|
+
|
1
17
|
### 2.0.4
|
2
18
|
|
3
19
|
* Migrated to Github Actions
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
+
size, disability, ethnicity, gender identity and expression, level of experience,
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity and
|
10
|
+
orientation.
|
11
|
+
|
12
|
+
## Our Standards
|
13
|
+
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
15
|
+
include:
|
16
|
+
|
17
|
+
* Using welcoming and inclusive language
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
19
|
+
* Gracefully accepting constructive criticism
|
20
|
+
* Focusing on what is best for the community
|
21
|
+
* Showing empathy towards other community members
|
22
|
+
|
23
|
+
Examples of unacceptable behavior by participants include:
|
24
|
+
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
+
advances
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
+
* Public or private harassment
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
30
|
+
address, without explicit permission
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
+
professional setting
|
33
|
+
|
34
|
+
## Our Responsibilities
|
35
|
+
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
38
|
+
response to any instances of unacceptable behavior.
|
39
|
+
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
+
threatening, offensive, or harmful.
|
45
|
+
|
46
|
+
## Scope
|
47
|
+
|
48
|
+
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
+
when an individual is representing the project or its community. Examples of
|
50
|
+
representing a project or community include using an official project e-mail
|
51
|
+
address, posting via an official social media account, or acting as an appointed
|
52
|
+
representative at an online or offline event. Representation of a project may be
|
53
|
+
further defined and clarified by project maintainers.
|
54
|
+
|
55
|
+
## Enforcement
|
56
|
+
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
+
reported by contacting the project team at development@hausgold.de. All
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
63
|
+
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
66
|
+
members of the project's leadership.
|
67
|
+
|
68
|
+
## Attribution
|
69
|
+
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
+
available at [http://contributor-covenant.org/version/1/4][version]
|
72
|
+
|
73
|
+
[homepage]: http://contributor-covenant.org
|
74
|
+
[version]: http://contributor-covenant.org/version/1/4/
|
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
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
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
|
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
|
72
|
-
|
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
|
-
|
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)
|
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
|
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)
|
@@ -31,7 +31,9 @@ flexible on the JWT verification level.
|
|
31
31
|
- [Per-API configuration](#per-api-configuration)
|
32
32
|
- [Full RSA256 example](#full-rsa256-example)
|
33
33
|
- [Development](#development)
|
34
|
+
- [Code of Conduct](#code-of-conduct)
|
34
35
|
- [Contributing](#contributing)
|
36
|
+
- [Releasing](#releasing)
|
35
37
|
|
36
38
|
## Installation
|
37
39
|
|
@@ -154,7 +156,7 @@ end
|
|
154
156
|
|
155
157
|
#### Failed authentication handling
|
156
158
|
|
157
|
-
When the client sends a
|
159
|
+
When the client sends a correctly formatted JSON Web Token with the Bearer
|
158
160
|
authentication scheme within the `Authorization` header and your authenticator
|
159
161
|
fails for some reason (token claims, wrong audience, bad subject, expired
|
160
162
|
token, wrong cryptographic signing etc), this function is called to handle the
|
@@ -175,8 +177,8 @@ end
|
|
175
177
|
#### RSA public key helper
|
176
178
|
|
177
179
|
We provide a straightforward solution to deal with the provision of RSA public
|
178
|
-
keys.
|
179
|
-
a local access, and
|
180
|
+
keys. Sometimes you want to distribute them by file to each machine and have
|
181
|
+
a local access, and sometimes you provide an endpoint on your identity
|
180
182
|
provider to fetch the RSA public key via HTTP/HTTPS. The `RsaPublicKey` class
|
181
183
|
helps you to fulfill this task easily.
|
182
184
|
|
@@ -413,17 +415,28 @@ end
|
|
413
415
|
|
414
416
|
## Development
|
415
417
|
|
416
|
-
After checking out the repo, run `
|
417
|
-
`
|
418
|
+
After checking out the repo, run `make install` to install dependencies. Then,
|
419
|
+
run `make test` to run the tests. You can also run `make shell-irb` for an
|
418
420
|
interactive prompt that will allow you to experiment.
|
419
421
|
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
422
|
+
## Code of Conduct
|
423
|
+
|
424
|
+
Everyone interacting in the project codebase, issue tracker, chat
|
425
|
+
rooms and mailing lists is expected to follow the [code of
|
426
|
+
conduct](./CODE_OF_CONDUCT.md).
|
425
427
|
|
426
428
|
## Contributing
|
427
429
|
|
428
430
|
Bug reports and pull requests are welcome on GitHub at
|
429
|
-
https://github.com/hausgold/grape-jwt-authentication.
|
431
|
+
https://github.com/hausgold/grape-jwt-authentication. Make sure that every pull request adds
|
432
|
+
a bullet point to the [changelog](./CHANGELOG.md) file with a reference to the
|
433
|
+
actual pull request.
|
434
|
+
|
435
|
+
## Releasing
|
436
|
+
|
437
|
+
The release process of this Gem is fully automated. You just need to open the
|
438
|
+
Github Actions [Release
|
439
|
+
Workflow](https://github.com/hausgold/grape-jwt-authentication/actions/workflows/release.yml)
|
440
|
+
and trigger a new run via the **Run workflow** button. Insert the new version
|
441
|
+
number (check the [changelog](./CHANGELOG.md) first for the latest release) and
|
442
|
+
you're done.
|
data/Rakefile
CHANGED
@@ -2,71 +2,18 @@
|
|
2
2
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
-
require '
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
@@ -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
|
9
|
-
spec.version
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
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.
|
14
|
-
spec.
|
15
|
-
spec.
|
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
|
-
|
21
|
-
spec.
|
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.
|
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.
|
28
|
-
spec.add_runtime_dependency 'keyless', '~> 1.
|
29
|
-
spec.add_runtime_dependency 'recursive-open-struct', '~> 1.
|
30
|
-
|
31
|
-
spec.add_development_dependency '
|
32
|
-
spec.add_development_dependency '
|
33
|
-
spec.add_development_dependency '
|
34
|
-
spec.add_development_dependency '
|
35
|
-
spec.add_development_dependency '
|
36
|
-
spec.add_development_dependency '
|
37
|
-
spec.add_development_dependency '
|
38
|
-
spec.add_development_dependency '
|
39
|
-
spec.add_development_dependency '
|
40
|
-
spec.add_development_dependency '
|
41
|
-
spec.add_development_dependency '
|
42
|
-
spec.add_development_dependency '
|
43
|
-
spec.add_development_dependency '
|
44
|
-
spec.add_development_dependency '
|
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
|
-
|
7
|
+
# The version of the +grape-jwt-authentication+ gem
|
8
|
+
VERSION = '2.2.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
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hermann Mayer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-24 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:
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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: '
|
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: '
|
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.
|
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: '
|
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.
|
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.
|
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
|
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
|
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:
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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:
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|
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
|
@@ -311,16 +355,20 @@ extra_rdoc_files: []
|
|
311
355
|
files:
|
312
356
|
- ".editorconfig"
|
313
357
|
- ".github/workflows/documentation.yml"
|
358
|
+
- ".github/workflows/release.yml"
|
314
359
|
- ".github/workflows/test.yml"
|
315
360
|
- ".gitignore"
|
316
361
|
- ".rspec"
|
317
362
|
- ".rubocop.yml"
|
318
363
|
- ".simplecov"
|
319
364
|
- ".yardopts"
|
365
|
+
- Appraisals
|
320
366
|
- CHANGELOG.md
|
367
|
+
- CODE_OF_CONDUCT.md
|
321
368
|
- Dockerfile
|
322
369
|
- Envfile
|
323
370
|
- Gemfile
|
371
|
+
- Guardfile
|
324
372
|
- LICENSE
|
325
373
|
- Makefile
|
326
374
|
- README.md
|
@@ -332,16 +380,23 @@ files:
|
|
332
380
|
- config/docker/.inputrc
|
333
381
|
- doc/assets/project.svg
|
334
382
|
- docker-compose.yml
|
383
|
+
- gemfiles/rails_5.2.gemfile
|
335
384
|
- grape-jwt-authentication.gemspec
|
336
385
|
- lib/grape/jwt/authentication.rb
|
337
386
|
- lib/grape/jwt/authentication/configuration.rb
|
338
387
|
- lib/grape/jwt/authentication/dependencies.rb
|
339
388
|
- lib/grape/jwt/authentication/jwt_handler.rb
|
340
389
|
- lib/grape/jwt/authentication/version.rb
|
341
|
-
homepage:
|
342
|
-
licenses:
|
343
|
-
|
344
|
-
|
390
|
+
homepage:
|
391
|
+
licenses:
|
392
|
+
- MIT
|
393
|
+
metadata:
|
394
|
+
homepage_uri: https://github.com/hausgold/grape-jwt-authentication
|
395
|
+
source_code_uri: https://github.com/hausgold/grape-jwt-authentication
|
396
|
+
changelog_uri: https://github.com/hausgold/grape-jwt-authentication/blob/master/CHANGELOG.md
|
397
|
+
bug_tracker_uri: https://github.com/hausgold/grape-jwt-authentication/issues
|
398
|
+
documentation_uri: https://www.rubydoc.info/gems/grape-jwt-authentication
|
399
|
+
post_install_message:
|
345
400
|
rdoc_options: []
|
346
401
|
require_paths:
|
347
402
|
- lib
|
@@ -349,15 +404,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
349
404
|
requirements:
|
350
405
|
- - ">="
|
351
406
|
- !ruby/object:Gem::Version
|
352
|
-
version: '
|
407
|
+
version: '2.5'
|
353
408
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
354
409
|
requirements:
|
355
410
|
- - ">="
|
356
411
|
- !ruby/object:Gem::Version
|
357
412
|
version: '0'
|
358
413
|
requirements: []
|
359
|
-
rubygems_version: 3.
|
360
|
-
signing_key:
|
414
|
+
rubygems_version: 3.3.26
|
415
|
+
signing_key:
|
361
416
|
specification_version: 4
|
362
417
|
summary: A reusable Grape JWT authentication concern
|
363
418
|
test_files: []
|