warden-jwt_auth 0.4.2 → 0.7.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: 6d846014120be83271db3fad2b4044f7973187efcaeb5be678483af60947d3c1
4
- data.tar.gz: e7d7194e4b20a789327cce656678a72e9755fb2831e25e81a79423c201774f95
3
+ metadata.gz: d1d3eebd02efa288aa59f731fc3650a0c1deefe2922f35a606ce53f0fd16d0be
4
+ data.tar.gz: 8bdab56cf91544de74393491d842c34208b6028000c07a2187caf93f09887093
5
5
  SHA512:
6
- metadata.gz: 63f7143db9afbbe477dfa4a75149406d82f6f907989174b298dc9aa741a10faf5eb7ac27f6e42530f43331ba27faf999a9cd3e1a1fae474e95747a6e7e70466c
7
- data.tar.gz: 612b8e386590a4d331a97c5463e86e06f35de57e0b3cb8aad3f0ce90ab2b5973c7ccce871ddf2b1e418633d73ad48ef2ea2d718c7779f6aac3ba6160d4c105b4
6
+ metadata.gz: 8949c3f273247d3fbbf6bc034952d50ab58be7214c411fa6144ea190485b3c3963dac7f024ef9462b08f6240c64b7c9e11cade4d3ddb655419ce0c0cd88e1075
7
+ data.tar.gz: 05076d7b6e458c914cd974c8310820e80a5f0832e19e7b82303a6d75dd9e04a403b2fc19bc925d954d08229cafd6ac1a7d31316977bc08803f80981723dbca8c
data/.codeclimate.yml CHANGED
@@ -8,8 +8,6 @@ engines:
8
8
  enabled: true
9
9
  rubocop:
10
10
  enabled: true
11
- reek:
12
- enabled: true
13
11
  ratings:
14
12
  paths:
15
13
  - "**.rb"
@@ -0,0 +1 @@
1
+ github: waiting-for-dev
data/.rubocop.yml CHANGED
@@ -1,17 +1,51 @@
1
1
  require: rubocop-rspec
2
2
  AllCops:
3
- TargetRubyVersion: 2.3
3
+ TargetRubyVersion: 2.7
4
+ Exclude:
5
+ - Gemfile
6
+ - warden-jwt_auth.gemspec
7
+ - spec/support/shared_contexts/*rb
8
+ - vendor/**/*
4
9
  RSpec/NestedGroups:
5
10
  Max: 3
6
- RSpec/MessageSpies:
7
- EnforcedStyle: 'receive'
8
- RSpec/ContextWording:
9
- Exclude:
10
- - "spec/support/shared_contexts/*rb"
11
+ RSpec/MessageExpectation:
12
+ EnforcedStyle: 'expect'
11
13
  Metrics/BlockLength:
12
14
  Exclude:
13
15
  - "spec/**/*.rb"
14
- Metrics/LineLength:
15
- Max: 100
16
- Naming/RescuedExceptionsVariableName:
17
- PreferredName: exception
16
+ Style/SafeNavigation:
17
+ Enabled: false
18
+ Layout/EmptyLinesAroundAttributeAccessor:
19
+ Enabled: true
20
+ Layout/SpaceAroundMethodCallOperator:
21
+ Enabled: true
22
+ Lint/DeprecatedOpenSSLConstant:
23
+ Enabled: true
24
+ Lint/MixedRegexpCaptureTypes:
25
+ Enabled: true
26
+ Lint/RaiseException:
27
+ Enabled: true
28
+ Lint/StructNewOverride:
29
+ Enabled: true
30
+ Style/AccessorGrouping:
31
+ Enabled: true
32
+ Style/BisectedAttrAccessor:
33
+ Enabled: true
34
+ Style/ExponentialNotation:
35
+ Enabled: true
36
+ Style/HashEachMethods:
37
+ Enabled: true
38
+ Style/HashTransformKeys:
39
+ Enabled: true
40
+ Style/HashTransformValues:
41
+ Enabled: true
42
+ Style/RedundantAssignment:
43
+ Enabled: true
44
+ Style/RedundantFetchBlock:
45
+ Enabled: true
46
+ Style/RedundantRegexpCharacterClass:
47
+ Enabled: true
48
+ Style/RedundantRegexpEscape:
49
+ Enabled: true
50
+ Style/SlicingWithRange:
51
+ Enabled: true
data/.travis.yml CHANGED
@@ -1,20 +1,20 @@
1
- sudo: false
2
1
  language: ruby
2
+ cache: bundler
3
3
  rvm:
4
- - 2.5
5
4
  - 2.6
6
5
  - 2.7
6
+ - 3.0
7
+ - ruby-head
7
8
  before_install:
8
9
  - gem update --system --no-doc
9
- - bundle install --gemfile=.overcommit_gems.rb
10
- before_script:
11
- - git config --global user.email 'travis@travis.ci'
12
- - git config --global user.name 'Travis CI'
10
+ - gem install bundler
13
11
  script:
14
12
  - bundle exec rspec
13
+ - bundle exec rubocop
15
14
  - bundle exec codeclimate-test-reporter
16
- - overcommit --sign
17
- - overcommit --run
15
+ jobs:
16
+ allow_failures:
17
+ - rvm: ruby-head
18
18
  addons:
19
19
  code_climate:
20
20
  repo_token:
data/CHANGELOG.md CHANGED
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## [0.7.0] - 2022-09-12
8
+ - Support asymmetric algorithms ([40](https://github.com/waiting-for-dev/warden-jwt_auth/issues/40))
9
+
10
+ ## [0.6.0] - 2021-09-21
11
+ - Support ruby 3.0 and deprecate 2.5
12
+ - Fixed dry-configurable compatibility. ([28](https://github.com/waiting-for-dev/warden-jwt_auth/issues/28))
13
+
14
+ ## [0.5.0]
15
+ ### Fixed
16
+ - Fixed dry-configurable compatibility. ([28](https://github.com/waiting-for-dev/warden-jwt_auth/issues/28))
17
+
7
18
  ## [0.4.2] - 2020-03-19
8
19
  ### Fixed
9
20
  - Lock dry-configurable dependency to fix upstream regression. ([21](https://github.com/waiting-for-dev/warden-jwt_auth/issues/21))
data/Dockerfile CHANGED
@@ -1,8 +1,5 @@
1
- FROM ruby:2.3.1
2
- ENV APP_HOME /app/
3
- ENV LIB_DIR lib/warden/jwt_auth/
4
- RUN mkdir -p $APP_HOME/$LIB_DIR
5
- WORKDIR $APP_HOME
6
- COPY Gemfile *gemspec $APP_HOME
7
- COPY $LIB_DIR/version.rb $APP_HOME/$LIB_DIR
8
- RUN bundle install
1
+ FROM ruby:3.0.0
2
+ ENV APP_USER warden_jwt_auth_user
3
+ RUN useradd -ms /bin/bash $APP_USER
4
+ USER $APP_USER
5
+ WORKDIR /home/$APP_USER/app
data/README.md CHANGED
@@ -14,10 +14,10 @@ off with a solution using refresh tokens, like some implementation of OAuth2.
14
14
 
15
15
  You can read about which security concerns this library takes into account and about JWT generic secure usage in the following series of posts:
16
16
 
17
- - [Stand Up for JWT Revocation](http://waiting-for-dev.github.io/blog/2017/01/23/stand_up_for_jwt_revocation/)
18
- - [JWT Revocation Strategies](http://waiting-for-dev.github.io/blog/2017/01/24/jwt_revocation_strategies/)
19
- - [JWT Secure Usage](http://waiting-for-dev.github.io/blog/2017/01/25/jwt_secure_usage/)
20
- - [A secure JWT authentication implementation for Rack and Rails](http://waiting-for-dev.github.io/blog/2017/01/26/a_secure_jwt_authentication_implementation_for_rack_and_rails/)
17
+ - [Stand Up for JWT Revocation](http://waiting-for-dev.github.io/blog/2017/01/23/stand_up_for_jwt_revocation)
18
+ - [JWT Revocation Strategies](http://waiting-for-dev.github.io/blog/2017/01/24/jwt_revocation_strategies)
19
+ - [JWT Secure Usage](http://waiting-for-dev.github.io/blog/2017/01/25/jwt_secure_usage)
20
+ - [A secure JWT authentication implementation for Rack and Rails](http://waiting-for-dev.github.io/blog/2017/01/26/a_secure_jwt_authentication_implementation_for_rack_and_rails)
21
21
 
22
22
  If what you need is a JWT authentication library for [devise](https://github.com/plataformatec/devise), better look at [devise-jwt](https://github.com/waiting-for-dev/devise-jwt), which is just a thin layer on top of this gem.
23
23
 
@@ -68,6 +68,16 @@ Warden::JWTAuth.configure do |config|
68
68
  end
69
69
  ```
70
70
 
71
+ If the algorithm is asymmetric (e.g. RS256) and necessitates a different decoding secret than the encoding secret, configure the `decoding_secret` setting as well.
72
+
73
+ ```ruby
74
+ Warden::JWTAuth.configure do |config|
75
+ config.secret = OpenSSL::PKey::RSA.new(ENV['WARDEN_JWT_PRIVATE_KEY'])
76
+ config.decoding_secret = OpenSSL::PKey::RSA.new(ENV['WARDEN_JWT_PUBLIC_KEY'])
77
+ config.algorithm = 'RS256' # or other asymmetric algorithm
78
+ end
79
+ ```
80
+
71
81
  ### Warden scopes configuration
72
82
 
73
83
  You have to map the warden scopes that will be authenticatable through JWT, with the user repositories from where these scope user records can be fetched. If a string is supplied, the user repository will first be looked up as a constant.
@@ -195,14 +205,6 @@ An then, for example:
195
205
 
196
206
  `docker-compose exec app rspec`
197
207
 
198
- This gem uses [overcommit](https://github.com/brigade/overcommit) to execute some code review engines. If you submit a pull request, it will be executed in the CI process. In order to set it up, you need to do:
199
-
200
- ```ruby
201
- bundle install --gemfile=.overcommit_gems.rb
202
- overcommit --sign
203
- overcommit --run # To test if it works
204
- ```
205
-
206
208
  ## Contributing
207
209
 
208
210
  Bug reports and pull requests are welcome on GitHub at https://github.com/waiting-for-dev/warden-jwt_auth. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
data/docker-compose.yml CHANGED
@@ -2,6 +2,11 @@ version: '2'
2
2
  services:
3
3
  app:
4
4
  build: .
5
- command: tail -f Gemfile
5
+ image: warden_jwt_auth
6
+ command: bash -c "bundle && tail -f Gemfile"
6
7
  volumes:
7
- - .:/app
8
+ - .:/home/warden_jwt_auth_user/app
9
+ tty: true
10
+ stdin_open: true
11
+ tmpfs:
12
+ - /tmp
@@ -34,8 +34,6 @@ module Warden
34
34
  jwt_scope?(scope) && request_matches?(path_info, method)
35
35
  end
36
36
 
37
- # :reek:ManualDispatch
38
- # :reek:UtilityFunction
39
37
  def add_token_to_env(user, scope, env)
40
38
  aud = EnvHelper.aud_header(env)
41
39
  token, payload = UserEncoder.new.call(user, scope, aud)
@@ -48,7 +46,6 @@ module Warden
48
46
  jwt_scopes.include?(scope)
49
47
  end
50
48
 
51
- # :reek:ControlParameter
52
49
  def request_matches?(path_info, method)
53
50
  dispatch_requests.each do |tuple|
54
51
  dispatch_method, dispatch_path = tuple
@@ -34,7 +34,6 @@ module Warden
34
34
  TokenRevoker.new.call(token)
35
35
  end
36
36
 
37
- # :reek:ControlParameter
38
37
  def token_should_be_revoked?(path_info, method)
39
38
  revocation_requests = config.revocation_requests
40
39
  revocation_requests.each do |tuple|
@@ -24,7 +24,6 @@ module Warden
24
24
 
25
25
  private
26
26
 
27
- # :reek:UtilityFunction
28
27
  def headers_with_token(env, headers)
29
28
  token = env[Hooks::PREPARED_TOKEN_ENV_KEY]
30
29
  token ? HeaderParser.to_headers(headers, token) : headers
@@ -14,7 +14,6 @@ module Warden
14
14
  @app = app
15
15
  end
16
16
 
17
- # :reek:FeatureEnvy
18
17
  def call(env)
19
18
  builder = Rack::Builder.new
20
19
  builder.use(RevocationManager)
@@ -34,7 +34,6 @@ module Warden
34
34
  # @param user [Interfaces::User] an user, whatever it is
35
35
  # @param scope [Symbol] A Warden scope
36
36
  # @return [Hash] payload to encode
37
- # :reek:ManualDispatch
38
37
  def self.payload_for_user(user, scope)
39
38
  sub = user.jwt_subject
40
39
  payload = { 'sub' => String(sub), 'scp' => scope.to_s }
@@ -6,9 +6,7 @@ module Warden
6
6
  module JWTAuth
7
7
  # Warden strategy to authenticate an user through a JWT token in the
8
8
  # `Authorization` request header
9
- # :reek:PrimaDonnaMethod
10
9
  class Strategy < Warden::Strategies::Base
11
- # :reek:NilCheck
12
10
  def valid?
13
11
  !token.nil?
14
12
  end
@@ -21,8 +19,8 @@ module Warden
21
19
  aud = EnvHelper.aud_header(env)
22
20
  user = UserDecoder.new.call(token, scope, aud)
23
21
  success!(user)
24
- rescue JWT::DecodeError => exception
25
- fail!(exception.message)
22
+ rescue JWT::DecodeError => e
23
+ fail!(e.message)
26
24
  end
27
25
 
28
26
  private
@@ -4,7 +4,7 @@ module Warden
4
4
  module JWTAuth
5
5
  # Decodes a JWT into a hash payload into a JWT token
6
6
  class TokenDecoder
7
- include JWTAuth::Import['secret', 'algorithm']
7
+ include JWTAuth::Import['decoding_secret', 'algorithm']
8
8
 
9
9
  # Decodes the payload from a JWT as a hash
10
10
  #
@@ -15,7 +15,7 @@ module Warden
15
15
  # @return [Hash] payload decoded from the JWT
16
16
  def call(token)
17
17
  JWT.decode(token,
18
- secret,
18
+ decoding_secret,
19
19
  true,
20
20
  algorithm: algorithm,
21
21
  verify_jti: true)[0]
@@ -20,12 +20,11 @@ module Warden
20
20
 
21
21
  private
22
22
 
23
- #:reek:FeatureEnvy
24
23
  def merge_with_default_claims(payload)
25
24
  now = Time.now.to_i
26
- payload['iat'] ||= now
27
- payload['exp'] ||= now + expiration_time
28
- payload['jti'] ||= SecureRandom.uuid
25
+ payload['iat'] ||= now
26
+ payload['exp'] ||= now + expiration_time
27
+ payload['jti'] ||= SecureRandom.uuid
29
28
  payload
30
29
  end
31
30
  end
@@ -14,10 +14,10 @@ module Warden
14
14
  scope = payload['scp'].to_sym
15
15
  user = PayloadUserHelper.find_user(payload)
16
16
  revocation_strategies[scope].revoke_jwt(payload, user)
17
- # rubocop:disable Lint/HandleExceptions
17
+ # rubocop:disable Lint/SuppressedException
18
18
  rescue JWT::ExpiredSignature
19
19
  end
20
- # rubocop:enable Lint/HandleExceptions
20
+ # rubocop:enable Lint/SuppressedException
21
21
  end
22
22
  end
23
23
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Warden
4
4
  module JWTAuth
5
- VERSION = '0.4.2'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
@@ -19,27 +19,49 @@ module Warden
19
19
  module JWTAuth
20
20
  extend Dry::Configurable
21
21
 
22
+ def symbolize_keys(hash)
23
+ hash.transform_keys(&:to_sym)
24
+ end
25
+
26
+ def upcase_first_items(array)
27
+ array.map do |tuple|
28
+ method, path = tuple
29
+ [method.to_s.upcase, path]
30
+ end
31
+ end
32
+
33
+ def constantize_values(hash)
34
+ hash.transform_values do |value|
35
+ value.is_a?(String) ? Object.const_get(value) : value
36
+ end
37
+ end
38
+
39
+ module_function :constantize_values, :symbolize_keys, :upcase_first_items
40
+
22
41
  # The secret used to encode the token
23
42
  setting :secret
24
43
 
44
+ # The secret used to decode the token, defaults to `secret` if not provided
45
+ setting :decoding_secret, constructor: ->(value) { value || config.secret }
46
+
25
47
  # The algorithm used to encode the token
26
- setting :algorithm, 'HS256'
48
+ setting :algorithm, default: 'HS256'
27
49
 
28
50
  # Expiration time for tokens
29
- setting :expiration_time, 3600
51
+ setting :expiration_time, default: 3600
30
52
 
31
53
  # Request header which value will be encoded as `aud` claim in JWT. If
32
54
  # the header is not present `aud` will be `nil`.
33
- setting :aud_header, 'JWT_AUD'
55
+ setting :aud_header, default: 'JWT_AUD'
34
56
 
35
57
  # A hash of warden scopes as keys and user repositories as values. The
36
58
  # values can be either the constants themselves or the constant names.
37
59
  #
38
60
  # @see Interfaces::UserRepository
39
61
  # @see Interfaces::User
40
- setting(:mappings, {}) do |value|
41
- symbolize_keys(value)
42
- end
62
+ setting(:mappings,
63
+ default: {},
64
+ constructor: ->(value) { constantize_values(symbolize_keys(value)) })
43
65
 
44
66
  # Array of tuples [request_method, request_path_regex] to match request
45
67
  # verbs and paths where a JWT token should be added to the `Authorization`
@@ -49,9 +71,9 @@ module Warden
49
71
  # [
50
72
  # ['POST', %r{^/sign_in$}]
51
73
  # ]
52
- setting(:dispatch_requests, []) do |value|
53
- upcase_first_items(value)
54
- end
74
+ setting(:dispatch_requests,
75
+ default: [],
76
+ constructor: ->(value) { upcase_first_items(value) })
55
77
 
56
78
  # Array of tuples [request_method, request_path_regex] to match request
57
79
  # verbs and paths where incoming JWT token should be be revoked
@@ -60,9 +82,9 @@ module Warden
60
82
  # [
61
83
  # ['DELETE', %r{^/sign_out$}]
62
84
  # ]
63
- setting :revocation_requests, [] do |value|
64
- upcase_first_items(value)
65
- end
85
+ setting(:revocation_requests,
86
+ default: [],
87
+ constructor: ->(value) { upcase_first_items(value) })
66
88
 
67
89
  # Hash with scopes as keys and strategies to revoke tokens for that scope
68
90
  # as values. The values can be either the constants themselves or the
@@ -74,45 +96,11 @@ module Warden
74
96
  # }
75
97
  #
76
98
  # @see Interfaces::RevocationStrategy
77
- setting(:revocation_strategies, {}) do |value|
78
- symbolize_keys(value)
79
- end
80
-
81
- # :reek:UtilityFunction
82
- def self.symbolize_keys(hash)
83
- Hash[
84
- hash.each_pair do |key, value|
85
- [key.to_sym, value]
86
- end
87
- ]
88
- end
89
-
90
- # :reek:UtilityFunction
91
- def self.upcase_first_items(array)
92
- array.map do |tuple|
93
- method, path = tuple
94
- [method.to_s.upcase, path]
95
- end
96
- end
99
+ setting(:revocation_strategies,
100
+ default: {},
101
+ constructor: ->(value) { constantize_values(symbolize_keys(value)) })
97
102
 
98
103
  Import = Dry::AutoInject(config)
99
-
100
- config.instance_eval do
101
- def mappings
102
- constantize_values(super)
103
- end
104
-
105
- def revocation_strategies
106
- constantize_values(super)
107
- end
108
-
109
- # :reek:UtilityFunction
110
- def constantize_values(hash)
111
- hash.each_with_object({}) do |(key, value), memo|
112
- memo[key] = value.is_a?(String) ? Object.const_get(value) : value
113
- end
114
- end
115
- end
116
104
  end
117
105
  end
118
106
 
@@ -20,8 +20,10 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'dry-auto_inject', '~> 0.6'
24
- spec.add_dependency 'dry-configurable', '~> 0.9', '< 0.11'
23
+ spec.metadata['rubygems_mfa_required'] = 'true'
24
+
25
+ spec.add_dependency 'dry-auto_inject', '~> 0.8'
26
+ spec.add_dependency 'dry-configurable', '~> 0.13'
25
27
  spec.add_dependency 'jwt', '~> 2.1'
26
28
  spec.add_dependency 'warden', '~> 1.2'
27
29
 
@@ -30,6 +32,9 @@ Gem::Specification.new do |spec|
30
32
  spec.add_development_dependency 'rack-test', '~> 1.1'
31
33
  spec.add_development_dependency 'rake', '~> 12.3'
32
34
  spec.add_development_dependency 'rspec', '~> 3.8'
35
+ # Cops
36
+ spec.add_development_dependency 'rubocop', '~> 0.87'
37
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.42'
33
38
  # Test reporting
34
39
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
35
40
  spec.add_development_dependency 'simplecov', '0.17'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-jwt_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc Busqué
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-19 00:00:00.000000000 Z
11
+ date: 2022-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-auto_inject
@@ -16,34 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
19
+ version: '0.8'
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: '0.6'
26
+ version: '0.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dry-configurable
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.9'
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '0.11'
33
+ version: '0.13'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '0.9'
44
- - - "<"
45
- - !ruby/object:Gem::Version
46
- version: '0.11'
40
+ version: '0.13'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: jwt
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -142,6 +136,34 @@ dependencies:
142
136
  - - "~>"
143
137
  - !ruby/object:Gem::Version
144
138
  version: '3.8'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.87'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.87'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.42'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.42'
145
167
  - !ruby/object:Gem::Dependency
146
168
  name: codeclimate-test-reporter
147
169
  requirement: !ruby/object:Gem::Requirement
@@ -179,10 +201,8 @@ extensions: []
179
201
  extra_rdoc_files: []
180
202
  files:
181
203
  - ".codeclimate.yml"
204
+ - ".github/FUNDING.yml"
182
205
  - ".gitignore"
183
- - ".overcommit.yml"
184
- - ".overcommit_gems.rb"
185
- - ".reek"
186
206
  - ".rspec"
187
207
  - ".rubocop.yml"
188
208
  - ".travis.yml"
@@ -218,7 +238,8 @@ files:
218
238
  homepage: https://github.com/waiting-for-dev/warden-jwt_auth
219
239
  licenses:
220
240
  - MIT
221
- metadata: {}
241
+ metadata:
242
+ rubygems_mfa_required: 'true'
222
243
  post_install_message:
223
244
  rdoc_options: []
224
245
  require_paths:
@@ -234,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
255
  - !ruby/object:Gem::Version
235
256
  version: '0'
236
257
  requirements: []
237
- rubygems_version: 3.1.2
258
+ rubygems_version: 3.0.3.1
238
259
  signing_key:
239
260
  specification_version: 4
240
261
  summary: JWT authentication for Warden.
data/.overcommit.yml DELETED
@@ -1,54 +0,0 @@
1
- #
2
- # Select version of overcommit and the other tools from Gemfile
3
- #
4
- gemfile: .overcommit_gems.rb
5
-
6
- #
7
- # Hooks that are run against every commit message after a user has written it.
8
- #
9
- CommitMsg:
10
- ALL:
11
- required: true
12
- exclude: &default_excludes
13
- - Gemfile
14
- - CHANGELOG.md
15
- - warden-jwt_auth.gemspec
16
- - README.md
17
-
18
- HardTabs:
19
- enabled: true
20
-
21
- SingleLineSubject:
22
- enabled: true
23
-
24
- #
25
- # Hooks that are run after `git commit` is executed, before the commit message
26
- # editor is displayed.
27
- #
28
- PreCommit:
29
- ALL:
30
- required: true
31
- exclude: *default_excludes
32
-
33
- BundleAudit:
34
- enabled: true
35
-
36
- BundleCheck:
37
- enabled: true
38
-
39
- LocalPathsInGemfile:
40
- enabled: true
41
-
42
- ExecutePermissions:
43
- enabled: true
44
- exclude:
45
- - bin/*
46
-
47
- Reek:
48
- enabled: true
49
-
50
- RuboCop:
51
- enabled: true
52
-
53
- TrailingWhitespace:
54
- enabled: true
data/.overcommit_gems.rb DELETED
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gem 'overcommit', '~> 0.36'
6
-
7
- # Patch-level verification for Bundled apps
8
- gem 'bundler-audit', '~> 0.5'
9
-
10
- # Ruby code smell reporter
11
- gem 'reek', '~> 4.5'
12
-
13
- # Ruby code style checking
14
- gem 'rubocop', '~> 0.43'
15
- gem 'rubocop-rspec', '~> 1.7'
data/.reek DELETED
File without changes