sorcery-jwt 0.1.13 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: adb4d9ffaf4afc6d3fcec35d9101b699d8985b5304c2767625781b0a8e76b8ac
4
- data.tar.gz: 5281e03b1e243165b870433dea084976bf2955bd97d8ee3dcc8dea2904d459f6
3
+ metadata.gz: 06d8787815dcfcbf9652ed2a264e817bf5a0b7e9f411069ac8df1d8059826824
4
+ data.tar.gz: 9d51d9a8b2b516bfa0f3953e3fb6ba14947faa4c83405a7d2d02e734dd7efec0
5
5
  SHA512:
6
- metadata.gz: 410e26d8ac465776c84d9cbb5e84fdc266d7adefa87c6b1d97ad9ae7a542eb2b1c1dd820ecbdcceb6ee7c461883ce4d2bad47b322797ed8529c50a82c36956d5
7
- data.tar.gz: '08f4afb85fa904eb01e5542d335f00baabcd1a331b3f0fb56f188844052ce2b98252ed54d4fa0f8b5ab37de53e8cc544e8509b42eb5413c2d7f0056b28aa702c'
6
+ metadata.gz: 1cf6e7c1459975031eacc72405acc288a1de4396ee6c415862b475ad0bc2ec9fa3f164d17cec139960243c7eab913ad436cf55ecf06959e200d6d59d483d4bce
7
+ data.tar.gz: fe7ec5f7c97409b00d290a595315b5431fb6a1182d06e69053b5a065e1995d213732e4c730175c7a2ab7bf48068129aa05303f1ca700c33150dded768aab5538
@@ -0,0 +1,16 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: "3.4"
15
+ bundler-cache: true
16
+ - run: bundle exec rspec
data/CHANGELOG.md ADDED
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 (2026-09-03)
4
+
5
+ ### Security
6
+
7
+ - **Fix auth bypass**: a validly-signed token without `id`/`email` claims hit
8
+ `find_by({})`, which returns the first user in the table. `login_from_jwt`
9
+ now rejects such tokens outright.
10
+ - `login_from_jwt` now requires the token's `email` claim to match the
11
+ looked-up user's email.
12
+
13
+ ### Fixed
14
+
15
+ - The model submodule now registers correctly on modern Rubies. The included
16
+ hook called `sorcery_config.class_eval` on a Config *instance*, which was
17
+ never a valid Ruby call; in applications, sorcery's `rescue NameError`
18
+ silently skipped the submodule, leaving `issue_token`/`decode_token`
19
+ undefined at runtime. The hook now uses `singleton_class.class_eval`.
20
+ - Removed an `include InstanceMethods` reference to a module that never
21
+ existed (it resolved to sorcery's core `InstanceMethods` by accident).
22
+ - `token_valid?` no longer depends on ActiveSupport (`.present?`).
23
+ - Failed JWT authentication sets `@current_user` to `nil` (sorcery
24
+ convention) instead of `false`.
25
+
26
+ ### Added
27
+
28
+ - Spec suite covering issuance, decoding, expiry, tamper rejection (wrong
29
+ secret/algorithm), the claim contract, and controller login paths.
30
+ - CI via GitHub Actions.
31
+
32
+ ## 0.1.13 (2022-02-02)
33
+
34
+ - Last release of the original series.
data/CODE_OF_CONDUCT.md CHANGED
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
55
55
  ## Enforcement
56
56
 
57
57
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at hluckenb@gmail.com. All
58
+ reported by contacting the project team at . All
59
59
  complaints will be reviewed and investigated and will result in a response that
60
60
  is deemed necessary and appropriate to the circumstances. The project team is
61
61
  obligated to maintain confidentiality with regard to the reporter of an incident.
data/Gemfile.lock CHANGED
@@ -1,64 +1,91 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sorcery-jwt (0.1.11)
4
+ sorcery-jwt (0.2.0)
5
5
  jwt (>= 1.0, < 3.0)
6
- sorcery (>= 0.13, < 0.16)
6
+ sorcery (>= 0.13, < 0.17)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- bcrypt (3.1.16)
12
- coderay (1.1.2)
13
- diff-lcs (1.3)
14
- faraday (1.0.1)
15
- multipart-post (>= 1.2, < 3)
16
- jwt (2.2.2)
17
- method_source (0.8.2)
18
- multi_json (1.15.0)
19
- multi_xml (0.6.0)
20
- multipart-post (2.1.1)
21
- oauth (0.5.6)
22
- oauth2 (1.4.4)
23
- faraday (>= 0.8, < 2.0)
24
- jwt (>= 1.0, < 3.0)
25
- multi_json (~> 1.3)
11
+ anonymous_loader (0.1.3)
12
+ version_gem (~> 1.1, >= 1.1.14)
13
+ auth-sanitizer (0.2.3)
14
+ version_gem (~> 1.1, >= 1.1.14)
15
+ base64 (0.3.0)
16
+ bcrypt (3.1.22)
17
+ bigdecimal (4.1.2)
18
+ diff-lcs (1.6.2)
19
+ faraday (2.14.3)
20
+ faraday-net_http (>= 2.0, < 3.5)
21
+ json
22
+ logger
23
+ faraday-net_http (3.4.4)
24
+ net-http (~> 0.5)
25
+ hashie (5.1.0)
26
+ logger
27
+ json (2.21.2)
28
+ jwt (2.10.3)
29
+ base64
30
+ logger (1.7.0)
31
+ multi_xml (0.9.1)
32
+ bigdecimal (>= 3.1, < 5)
33
+ net-http (0.9.1)
34
+ uri (>= 0.11.1)
35
+ oauth (1.1.8)
36
+ anonymous_loader (~> 0.1, >= 0.1.3)
37
+ auth-sanitizer (~> 0.2, >= 0.2.3)
38
+ base64 (~> 0.1)
39
+ oauth-tty (~> 1.0, >= 1.0.13)
40
+ snaky_hash (~> 2.0, >= 2.0.7)
41
+ version_gem (~> 1.1, >= 1.1.14)
42
+ oauth-tty (1.0.13)
43
+ anonymous_loader (~> 0.1, >= 0.1.3)
44
+ auth-sanitizer (~> 0.2, >= 0.2.3)
45
+ version_gem (~> 1.1, >= 1.1.14)
46
+ oauth2 (2.0.25)
47
+ anonymous_loader (~> 0.1, >= 0.1.3)
48
+ auth-sanitizer (~> 0.2, >= 0.2.3)
49
+ faraday (>= 0.17.3, < 4.0)
50
+ jwt (>= 1.0, < 4.0)
51
+ logger (~> 1.2)
26
52
  multi_xml (~> 0.5)
27
- rack (>= 1.2, < 3)
28
- pry (0.10.4)
29
- coderay (~> 1.1.0)
30
- method_source (~> 0.8.1)
31
- slop (~> 3.4)
32
- rack (2.2.3)
33
- rake (13.0.1)
34
- rspec (3.8.0)
35
- rspec-core (~> 3.8.0)
36
- rspec-expectations (~> 3.8.0)
37
- rspec-mocks (~> 3.8.0)
38
- rspec-core (3.8.0)
39
- rspec-support (~> 3.8.0)
40
- rspec-expectations (3.8.2)
53
+ rack (>= 1.2, < 4)
54
+ snaky_hash (~> 2.0, >= 2.0.7)
55
+ version_gem (~> 1.1, >= 1.1.14)
56
+ rack (3.2.7)
57
+ rake (13.4.2)
58
+ rspec (3.13.2)
59
+ rspec-core (~> 3.13.0)
60
+ rspec-expectations (~> 3.13.0)
61
+ rspec-mocks (~> 3.13.0)
62
+ rspec-core (3.13.6)
63
+ rspec-support (~> 3.13.0)
64
+ rspec-expectations (3.13.5)
41
65
  diff-lcs (>= 1.2.0, < 2.0)
42
- rspec-support (~> 3.8.0)
43
- rspec-mocks (3.8.0)
66
+ rspec-support (~> 3.13.0)
67
+ rspec-mocks (3.13.8)
44
68
  diff-lcs (>= 1.2.0, < 2.0)
45
- rspec-support (~> 3.8.0)
46
- rspec-support (3.8.0)
47
- slop (3.6.0)
48
- sorcery (0.15.0)
69
+ rspec-support (~> 3.13.0)
70
+ rspec-support (3.13.7)
71
+ snaky_hash (2.0.7)
72
+ hashie (>= 0.1.0, < 6)
73
+ version_gem (~> 1.1, >= 1.1.14)
74
+ sorcery (0.16.5)
49
75
  bcrypt (~> 3.1)
50
- oauth (~> 0.4, >= 0.4.4)
51
- oauth2 (~> 1.0, >= 0.8.0)
76
+ oauth (>= 0.6)
77
+ oauth2 (~> 2.0)
78
+ uri (1.1.1)
79
+ version_gem (1.1.15)
52
80
 
53
81
  PLATFORMS
54
82
  ruby
83
+ x86_64-linux
55
84
 
56
85
  DEPENDENCIES
57
- bundler (~> 1.16)
58
- pry (~> 0.10.0)
59
86
  rake (~> 13.0)
60
87
  rspec (~> 3.0)
61
88
  sorcery-jwt!
62
89
 
63
90
  BUNDLED WITH
64
- 1.17.2
91
+ 2.6.9
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018 Hayden Luckenbach
3
+ Copyright (c) 2018
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/PLAN.md ADDED
@@ -0,0 +1,94 @@
1
+ # Sorcery::Jwt — Completion plan (1.0.0, no rewrite)
2
+
3
+ Goal: ship 1.0.0 = the **existing API**, bug-fixed, tested, CI'd, compatible
4
+ with current sorcery. No architectural changes. Everything that would break
5
+ the public API is deferred (§5).
6
+
7
+ Public API frozen as-is (from `0.1.13`):
8
+ `issue_token(payload)` · `decode_token(token)` · `token_valid?(token)` ·
9
+ `login_from_jwt` (login source) · `login_and_issue_token(*credentials)` ·
10
+ token claims `id` + `email` · config: `jwt_secret`, `jwt_algorithm`,
11
+ `session_expiry`.
12
+
13
+ Current version `0.1.13`. Target `1.0.0`. Est. **~3 days**.
14
+
15
+ ---
16
+
17
+ ## Phase 0 — Environment & packaging *(~0.5 day)*
18
+
19
+ - [ ] Install Ruby 3.2+ (none on this machine).
20
+ - [ ] Refresh `Gemfile.lock` on modern Bundler; drop `spec.add_development_dependency "bundler"`.
21
+ - [ ] Fill gemspec: `authors`, `email`, `description`, `metadata[...]`
22
+ (`homepage_uri`, `source_code_uri`, `changelog_uri`).
23
+ - [ ] Dependency check: gemspec allows `sorcery (>= 0.13, < 0.17)` and
24
+ `jwt (>= 1.0, < 3.0)`. Latest sorcery is **0.18.0** (Dec 2025, needs
25
+ Ruby ≥ 3.2). Plan: test 0.16.5 / 0.17 / 0.18, widen the range to what
26
+ CI proves. Keep `jwt < 3.0` unless 3.x is proven stable.
27
+
28
+ ## Phase 1 — Bug fixes, API unchanged *(~0.5 day)*
29
+
30
+ All fixes are in-place; no caller-visible changes except corrected behavior.
31
+
32
+ - [ ] **Auth bypass** (`login_from_jwt`): `decoded_token.first.slice("id",
33
+ "email")` can be `{}` for a validly-signed token → `find_by({})`
34
+ returns the first user in the table. Fix: reject empty slice before
35
+ lookup (~2 lines). This is the only security-critical item.
36
+ - [ ] `token_valid?`: `.present?` is an undeclared ActiveSupport dependency.
37
+ Replace with a plain truthy check; add spec proving it works without
38
+ ActiveSupport loaded.
39
+ - [ ] Failed JWT login sets `@current_user = false` → `nil` (sorcery
40
+ convention).
41
+ - [ ] Keep the `JWT::ExpiredSignature` rescue clause (redundant on jwt 2.x,
42
+ correct on 1.x — harmless either way).
43
+
44
+ ## Phase 2 — Test suite *(~1 day, the long pole)*
45
+
46
+ - [ ] PORO test doubles, not a dummy Rails app: stub `User#find_by` /
47
+ `authenticate`, fake controller with stubbed `request.headers`.
48
+ Time-box **half a day**; if sorcery's Model included-hook fights a
49
+ PORO, mirror sorcery's own spec helper pattern instead.
50
+ - [ ] Specs (all public methods + failure modes):
51
+ - issue → decode round-trip; `exp` set and enforced
52
+ - wrong secret / wrong algorithm → rejected
53
+ - **missing claims → no login** (bypass regression test)
54
+ - valid sig, user not in DB → no login
55
+ - `token_valid?` without ActiveSupport
56
+ - `login_and_issue_token` bad credentials → nil, no `current_user`
57
+ - missing/malformed Authorization header → no login, no exception
58
+ - [ ] **Ship `0.2.0`** here: tested + security fix for the existing user base
59
+ (95K downloads on 0.1.13), zero API break. Don't hold it for 1.0.
60
+
61
+ ## Phase 3 — Compat verification + CI *(~0.5 day)*
62
+
63
+ - [ ] Replace `.travis.yml` with GitHub Actions: `bundle exec rspec` on
64
+ Ruby 3.2 / 3.3 / 3.4 × sorcery 0.16.5 / 0.17 / 0.18 (or appraisal).
65
+ - [ ] Fix whatever breaks on sorcery 0.17/0.18 (candidate:
66
+ `Config.login_sources` internals, `Time.now` usage).
67
+ - [ ] Set final dependency ranges from what CI proves green.
68
+
69
+ ## Phase 4 — Docs + release *(~0.5 day)*
70
+
71
+ - [ ] README: claim contract (`id` + `email` required in payload), config
72
+ reference, security notes (no built-in revocation — link
73
+ waiting-for-dev revocation strategies), upstream note (sorcery v1
74
+ plans an official JWT plugin).
75
+ - [ ] `CHANGELOG.md` 0.1.13 → 1.0.0: framing = same API, bugs fixed, suite +
76
+ CI added, current sorcery supported. No breaking changes from 0.1.13.
77
+ - [ ] `bundle exec rake build`, install locally, smoke test.
78
+ - [ ] Tag `v1.0.0`, `gem push` (hayfever owns the rubygems slot).
79
+
80
+ ---
81
+
82
+ ## 5. Explicitly deferred (API-breaking — out of scope for 1.0)
83
+
84
+ From the earlier review; revisit only if upstream v1 stalls indefinitely:
85
+
86
+ - `token_version` revocation (logout / password-change invalidation)
87
+ - Refresh tokens with rotation + reuse detection
88
+ - `sub` / `iat` / `jti` claims, `exp` leeway, email decoupling
89
+ - `authenticate_from_token` encapsulation (decode contract stays as-is)
90
+
91
+ Endgame note: upstream sorcery is active (commits through mid-2026, V1
92
+ roadmap on main) and plans an official `sorcery-jwt` plugin for v1 — same
93
+ gem name we own. After 1.0, talk to maintainers (history in
94
+ sorcery-rework#9) about handover vs. parallel.
@@ -11,13 +11,14 @@ module Sorcery
11
11
  protected
12
12
 
13
13
  def login_from_jwt
14
- user = decoded_token.first.slice("id", "email")
14
+ claims = decoded_token.first.slice("id", "email")
15
+ return @current_user = nil if claims.empty?
15
16
 
16
- @current_user = user_class.find_by(user)
17
+ @current_user = user_class.find_by(claims)
17
18
  auto_login(@current_user) if @current_user
18
19
  @current_user
19
20
  rescue JWT::DecodeError, JWT::ExpiredSignature
20
- @current_user = false
21
+ @current_user = nil
21
22
  end
22
23
 
23
24
  def login_and_issue_token(*credentials)
@@ -1,5 +1,5 @@
1
1
  module Sorcery
2
2
  module Jwt
3
- VERSION = "0.1.13".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
5
5
  end
@@ -6,7 +6,9 @@ module Sorcery
6
6
  module Submodules
7
7
  module Jwt
8
8
  def self.included(base)
9
- base.sorcery_config.class_eval do
9
+ # Define the jwt accessors on the config instance's singleton class;
10
+ # Config#class_eval is not a valid Ruby call.
11
+ base.sorcery_config.singleton_class.class_eval do
10
12
  # Secret used to encode JWTs. Should correspond to the type needed by the algorithm used.
11
13
  attr_accessor :jwt_secret
12
14
  # Type of the algorithm used to encode JWTs. Corresponds to the options available in jwt/ruby-jwt.
@@ -25,7 +27,6 @@ module Sorcery
25
27
  base.sorcery_config.after_config << :validate_secret_defined
26
28
 
27
29
  base.extend(ClassMethods)
28
- base.send(:include, InstanceMethods)
29
30
  end
30
31
 
31
32
  module ClassMethods
@@ -39,7 +40,7 @@ module Sorcery
39
40
  end
40
41
 
41
42
  def token_valid?(token)
42
- decode_token(token).present?
43
+ !!decode_token(token)
43
44
  rescue JWT::DecodeError, JWT::ExpiredSignature
44
45
  false
45
46
  end
data/mise.toml ADDED
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ ruby = "3.4"
data/sorcery-jwt.gemspec CHANGED
@@ -6,22 +6,18 @@ Gem::Specification.new do |spec|
6
6
  spec.name = "sorcery-jwt"
7
7
  spec.version = Sorcery::Jwt::VERSION
8
8
  spec.authors = ["Hayden Luckenbach"]
9
- spec.email = ["hluckenb@gmail.com"]
10
9
 
11
10
  spec.summary = "Jwt extension for the Sorcery authentication library"
12
- spec.description = ""
11
+ spec.description = "Adds JWT issuance and authentication to the Sorcery " \
12
+ "authentication library, for API-only Rails apps."
13
13
  spec.homepage = "https://github.com/hayfever/sorcery-jwt"
14
14
  spec.license = "MIT"
15
15
 
16
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the
17
- # 'allowed_push_host' to allow pushing to a single host or delete this section
18
- # to allow pushing to any host.
19
- # if spec.respond_to?(:metadata)
20
- # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
21
- # else
22
- # raise "RubyGems 2.0 or newer is required to protect against " \
23
- # "public gem pushes."
24
- # end
16
+ spec.metadata["homepage_uri"] = spec.homepage
17
+ spec.metadata["source_code_uri"] = spec.homepage
18
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/CHANGELOG.md"
19
+
20
+ spec.required_ruby_version = ">= 3.0"
25
21
 
26
22
  # Specify which files should be added to the gem when it is released.
27
23
  # The `git ls-files -z` loads the files in the RubyGem that have been
@@ -36,11 +32,9 @@ Gem::Specification.new do |spec|
36
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
33
  spec.require_paths = ["lib"]
38
34
 
39
- spec.add_development_dependency "bundler", ">= 2.1.0"
40
- spec.add_development_dependency "pry", "~> 0.10.0"
41
35
  spec.add_development_dependency "rake", "~> 13.0"
42
36
  spec.add_development_dependency "rspec", "~> 3.0"
43
37
 
44
38
  spec.add_runtime_dependency "jwt", ">= 1.0", "< 3.0"
45
39
  spec.add_runtime_dependency "sorcery", ">= 0.13", "< 0.17"
46
- end
40
+ end
metadata CHANGED
@@ -1,43 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorcery-jwt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hayden Luckenbach
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-02-02 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 2.1.0
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 2.1.0
27
- - !ruby/object:Gem::Dependency
28
- name: pry
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 0.10.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 0.10.0
41
12
  - !ruby/object:Gem::Dependency
42
13
  name: rake
43
14
  requirement: !ruby/object:Gem::Requirement
@@ -106,20 +77,21 @@ dependencies:
106
77
  - - "<"
107
78
  - !ruby/object:Gem::Version
108
79
  version: '0.17'
109
- description: ''
110
- email:
111
- - hluckenb@gmail.com
80
+ description: Adds JWT issuance and authentication to the Sorcery authentication library,
81
+ for API-only Rails apps.
112
82
  executables: []
113
83
  extensions: []
114
84
  extra_rdoc_files: []
115
85
  files:
86
+ - ".github/workflows/ci.yml"
116
87
  - ".gitignore"
117
88
  - ".rspec"
118
- - ".travis.yml"
89
+ - CHANGELOG.md
119
90
  - CODE_OF_CONDUCT.md
120
91
  - Gemfile
121
92
  - Gemfile.lock
122
93
  - LICENSE.txt
94
+ - PLAN.md
123
95
  - README.md
124
96
  - Rakefile
125
97
  - bin/console
@@ -128,12 +100,15 @@ files:
128
100
  - lib/sorcery/jwt.rb
129
101
  - lib/sorcery/jwt/version.rb
130
102
  - lib/sorcery/model/submodules/jwt.rb
103
+ - mise.toml
131
104
  - sorcery-jwt.gemspec
132
105
  homepage: https://github.com/hayfever/sorcery-jwt
133
106
  licenses:
134
107
  - MIT
135
- metadata: {}
136
- post_install_message:
108
+ metadata:
109
+ homepage_uri: https://github.com/hayfever/sorcery-jwt
110
+ source_code_uri: https://github.com/hayfever/sorcery-jwt
111
+ changelog_uri: https://github.com/hayfever/sorcery-jwt/CHANGELOG.md
137
112
  rdoc_options: []
138
113
  require_paths:
139
114
  - lib
@@ -141,15 +116,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
116
  requirements:
142
117
  - - ">="
143
118
  - !ruby/object:Gem::Version
144
- version: '0'
119
+ version: '3.0'
145
120
  required_rubygems_version: !ruby/object:Gem::Requirement
146
121
  requirements:
147
122
  - - ">="
148
123
  - !ruby/object:Gem::Version
149
124
  version: '0'
150
125
  requirements: []
151
- rubygems_version: 3.1.6
152
- signing_key:
126
+ rubygems_version: 3.6.9
153
127
  specification_version: 4
154
128
  summary: Jwt extension for the Sorcery authentication library
155
129
  test_files: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.5.1
5
- before_install: gem install bundler -v 1.16.2