omniauth-auth0 3.1.0 → 3.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/devcontainer.json +1 -1
  3. data/.github/CODEOWNERS +1 -1
  4. data/.github/ISSUE_TEMPLATE/Bug Report.yml +76 -0
  5. data/.github/ISSUE_TEMPLATE/Feature Request.yml +53 -0
  6. data/.github/ISSUE_TEMPLATE/config.yml +2 -2
  7. data/.github/actions/get-prerelease/action.yml +30 -0
  8. data/.github/actions/get-release-notes/action.yml +42 -0
  9. data/.github/actions/get-version/action.yml +21 -0
  10. data/.github/actions/release-create/action.yml +47 -0
  11. data/.github/actions/rl-scanner/action.yml +71 -0
  12. data/.github/actions/rubygems-publish/action.yml +30 -0
  13. data/.github/actions/setup/action.yml +28 -0
  14. data/.github/actions/tag-exists/action.yml +36 -0
  15. data/.github/dependabot.yml +13 -0
  16. data/.github/workflows/codeql.yml +53 -0
  17. data/.github/workflows/matrix.json +7 -0
  18. data/.github/workflows/publish.yml +33 -0
  19. data/.github/workflows/rl-scanner.yml +65 -0
  20. data/.github/workflows/ruby-release.yml +72 -0
  21. data/.github/workflows/snyk.yml +40 -0
  22. data/.github/workflows/test.yml +69 -0
  23. data/.shiprc +2 -1
  24. data/.version +1 -0
  25. data/CHANGELOG.md +20 -0
  26. data/EXAMPLES.md +19 -5
  27. data/Gemfile +4 -5
  28. data/Gemfile.lock +128 -91
  29. data/README.md +42 -1
  30. data/lib/omniauth/auth0/jwt_token.rb +38 -0
  31. data/lib/omniauth/auth0/jwt_validator.rb +19 -3
  32. data/lib/omniauth/strategies/auth0.rb +48 -14
  33. data/lib/omniauth-auth0/version.rb +1 -1
  34. data/omniauth-auth0.gemspec +1 -0
  35. data/spec/omniauth/auth0/jwt_token_spec.rb +87 -0
  36. data/spec/omniauth/auth0/jwt_validator_spec.rb +109 -31
  37. data/spec/omniauth/strategies/auth0_spec.rb +478 -230
  38. data/spec/spec_helper.rb +1 -0
  39. metadata +39 -14
  40. data/.circleci/config.yml +0 -63
  41. data/.gemrelease +0 -2
  42. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -39
  43. data/.github/ISSUE_TEMPLATE/report_a_bug.md +0 -55
  44. data/.github/workflows/semgrep.yml +0 -24
@@ -0,0 +1,72 @@
1
+ name: Create Release
2
+
3
+ on:
4
+ workflow_call:
5
+ inputs:
6
+ ruby-version:
7
+ required: true
8
+ type: string
9
+ secrets:
10
+ github-token:
11
+ required: true
12
+ rubygems-token:
13
+ required: true
14
+
15
+ jobs:
16
+ release:
17
+ if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/'))
18
+ runs-on: ubuntu-latest
19
+ environment: release
20
+
21
+ steps:
22
+ # Checkout the code
23
+ - uses: actions/checkout@v6
24
+ with:
25
+ fetch-depth: 0
26
+
27
+ # Get the version from the branch name
28
+ - id: get_version
29
+ uses: ./.github/actions/get-version
30
+
31
+ # Get the prerelease flag from the branch name
32
+ - id: get_prerelease
33
+ uses: ./.github/actions/get-prerelease
34
+ with:
35
+ version: ${{ steps.get_version.outputs.version }}
36
+
37
+ # Get the release notes
38
+ # This will expose the release notes as env.RELEASE_NOTES
39
+ - id: get_release_notes
40
+ uses: ./.github/actions/get-release-notes
41
+ with:
42
+ token: ${{ secrets.github-token }}
43
+ version: ${{ steps.get_version.outputs.version }}
44
+ repo_owner: ${{ github.repository_owner }}
45
+ repo_name: ${{ github.event.repository.name }}
46
+
47
+ # Check if the tag already exists
48
+ - id: tag_exists
49
+ uses: ./.github/actions/tag-exists
50
+ with:
51
+ tag: ${{ steps.get_version.outputs.version }}
52
+ token: ${{ secrets.github-token }}
53
+
54
+ # If the tag already exists, exit with an error
55
+ - if: steps.tag_exists.outputs.exists == 'true'
56
+ run: exit 1
57
+
58
+ # Publish the release to our package manager
59
+ - uses: ./.github/actions/rubygems-publish
60
+ with:
61
+ ruby-version: ${{ inputs.ruby-version }}
62
+ rubygems-token: ${{ secrets.rubygems-token }}
63
+
64
+ # Create a release for the tag
65
+ - uses: ./.github/actions/release-create
66
+ with:
67
+ token: ${{ secrets.github-token }}
68
+ name: ${{ steps.get_version.outputs.version }}
69
+ body: ${{ steps.get_release_notes.outputs.release-notes }}
70
+ tag: ${{ steps.get_version.outputs.version }}
71
+ commit: ${{ github.sha }}
72
+ prerelease: ${{ steps.get_prerelease.outputs.prerelease }}
@@ -0,0 +1,40 @@
1
+ name: Snyk
2
+
3
+ on:
4
+ merge_group:
5
+ workflow_dispatch:
6
+ pull_request:
7
+ types:
8
+ - opened
9
+ - synchronize
10
+ push:
11
+ branches:
12
+ - master
13
+ schedule:
14
+ - cron: "30 0 1,15 * *"
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ concurrency:
20
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
21
+ cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
22
+
23
+ jobs:
24
+ check:
25
+ name: Check for Vulnerabilities
26
+ runs-on: ubuntu-latest
27
+
28
+ steps:
29
+ - if: github.actor == 'dependabot[bot]' || github.event_name == 'merge_group'
30
+ run: exit 0 # Skip unnecessary test runs for dependabot and merge queues. Artifically flag as successful, as this is a required check for branch protection.
31
+
32
+ - uses: actions/checkout@v4
33
+ with:
34
+ ref: ${{ github.event.pull_request.head.sha || github.ref }}
35
+
36
+ - run: npm install -g snyk
37
+
38
+ - run: snyk test
39
+ env:
40
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
@@ -0,0 +1,69 @@
1
+ name: Build and Test
2
+
3
+ on:
4
+ merge_group:
5
+ workflow_dispatch:
6
+ pull_request:
7
+ branches:
8
+ - master
9
+ push:
10
+ branches:
11
+ - master
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ concurrency:
17
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
18
+ cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
19
+
20
+ env:
21
+ CACHE_KEY: "${{ github.ref }}-${{ github.run_id }}-${{ github.run_attempt }}"
22
+
23
+ jobs:
24
+ configure:
25
+ name: Configure Build Matrix
26
+ runs-on: ubuntu-latest
27
+
28
+ outputs:
29
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
30
+
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+ with:
34
+ ref: ${{ github.event.pull_request.head.sha || github.ref }}
35
+
36
+ - id: set-matrix
37
+ run: echo "matrix=$(jq -c . < ./.github/workflows/matrix.json)" >> $GITHUB_OUTPUT
38
+
39
+ unit:
40
+ needs: configure
41
+
42
+ name: Run Unit Tests
43
+ runs-on: ubuntu-latest
44
+
45
+ strategy:
46
+ matrix: ${{ fromJson(needs.configure.outputs.matrix) }}
47
+
48
+ env:
49
+ DOMAIN: example.auth0.dev
50
+ CLIENT_ID: example-client
51
+ CLIENT_SECRET: example-secret
52
+ MASTER_JWT: example-jwt
53
+ BUNDLE_PATH: vendor/bundle
54
+
55
+ steps:
56
+ - name: Checkout code
57
+ uses: actions/checkout@v4
58
+
59
+ - name: Configure Ruby
60
+ uses: ./.github/actions/setup
61
+ with:
62
+ ruby: ${{ matrix.ruby }}
63
+
64
+ - name: Run tests
65
+ run: bundle exec rake spec
66
+
67
+ - name: Upload coverage
68
+ if: matrix.ruby == '3.2'
69
+ uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@3.1.4
data/.shiprc CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "files": {
3
- "lib/omniauth-auth0/version.rb": []
3
+ "lib/omniauth-auth0/version.rb": [],
4
+ ".version": []
4
5
  },
5
6
  "prebump": "bundle install && bundle exec rake test",
6
7
  "postbump": "bundle update"
data/.version ADDED
@@ -0,0 +1 @@
1
+ v3.2.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Change Log
2
2
 
3
+ ## [v3.2.0](https://github.com/auth0/omniauth-auth0/tree/v3.2.0) (2026-05-27)
4
+ [Full Changelog](https://github.com/auth0/omniauth-auth0/compare/v3.1.1...v3.2.0)
5
+
6
+ **Added**
7
+ - Add support for client assertion signing key authentication [\#203](https://github.com/auth0/omniauth-auth0/pull/203) ([kaczowkad](https://github.com/kaczowkad))
8
+
9
+ **Dependency Bumps**
10
+ - Bump faraday from 2.7.10 to 2.14.1 [\#215](https://github.com/auth0/omniauth-auth0/pull/215) ([dependabot[bot]](https://github.com/apps/dependabot))
11
+ - Bump rack from 2.2.7 to 2.2.23 [\#217](https://github.com/auth0/omniauth-auth0/pull/217) ([dependabot[bot]](https://github.com/apps/dependabot))
12
+ - Bump rexml from 3.2.5 to 3.3.9 [\#206](https://github.com/auth0/omniauth-auth0/pull/206) ([arpit-jn](https://github.com/arpit-jn))
13
+
14
+ ## [v3.1.1](https://github.com/auth0/omniauth-auth0/tree/v3.1.1) (2023-03-01)
15
+ [Full Changelog](https://github.com/auth0/omniauth-auth0/compare/v3.1.0...v3.1.1)
16
+
17
+ **Added**
18
+ - [SDK-4410] Support Organization Name in JWT validation [\#184](https://github.com/auth0/omniauth-auth0/pull/184) ([stevehobbsdev](https://github.com/stevehobbsdev))
19
+
20
+ **Fixed**
21
+ - fix: upgrade to Sinatra 3 and use Rack::Session::Cookie in tests [\#165](https://github.com/auth0/omniauth-auth0/pull/165) ([stevehobbsdev](https://github.com/stevehobbsdev))
22
+
3
23
  ## [v3.1.0](https://github.com/auth0/omniauth-auth0/tree/v3.1.0) (2022-11-04)
4
24
 
5
25
  [Full Changelog](https://github.com/auth0/omniauth-auth0/compare/v3.0.0...v3.1.0)
data/EXAMPLES.md CHANGED
@@ -79,6 +79,7 @@ In some scenarios, you may need to pass specific query parameters to `/authorize
79
79
  - `screen_hint` (only relevant to New Universal Login Experience)
80
80
  - `organization`
81
81
  - `invitation`
82
+ - `ui_locales` (only relevant to New Universal Login Experience)
82
83
 
83
84
  Simply pass these query parameters to your OmniAuth redirect endpoint to enable their behavior.
84
85
 
@@ -124,25 +125,38 @@ When passing `openid` to the scope and `organization` to the authorize params, y
124
125
 
125
126
  ### Validating Organizations when using Organization Login Prompt
126
127
 
127
- When Organization login prompt is enabled on your application, but you haven't specified an Organization for the application's authorization endpoint, the `org_id` claim will be present on the ID token, and should be validated to ensure that the value received is expected or known.
128
+ When Organization login prompt is enabled on your application, but you haven't specified an Organization for the application's authorization endpoint, `org_id` or `org_name` claims will be present on the ID and access tokens, and should be validated to ensure that the value received is expected or known.
128
129
 
129
130
  Normally, validating the issuer would be enough to ensure that the token was issued by Auth0, and this check is performed by the SDK. However, in the case of organizations, additional checks should be made so that the organization within an Auth0 tenant is expected.
130
131
 
131
- In particular, the `org_id` claim should be checked to ensure it is a value that is already known to the application. This could be validated against a known list of organization IDs, or perhaps checked in conjunction with the current request URL. e.g. the sub-domain may hint at what organization should be used to validate the ID Token.
132
+ In particular, the `org_id` and `org_name` claims should be checked to ensure it is a value that is already known to the application. This could be validated against a known list of organization IDs, or perhaps checked in conjunction with the current request URL. e.g. the sub-domain may hint at what organization should be used to validate the ID Token. For `org_id`, this should be a **case-sensitive, exact match check**. For `org_name`, this should be a **case-insentive check**.
133
+
134
+ The decision to validate the `org_id` or `org_name` claim is determined by the expected organization ID or name having an `org_` prefix.
132
135
 
133
136
  Here is an example using it in your `callback` method
134
137
 
135
138
  ```ruby
136
- def callback
137
- claims = request.env['omniauth.auth']['extra']['raw_info']
139
+ def callback
140
+ claims = request.env['omniauth.auth']['extra']['raw_info']
141
+
142
+ validate_as_id = expected_org.start_with?('org_')
138
143
 
139
- if claims["org"] && claims["org"] !== expected_org
144
+ if validate_as_id
145
+ if claims["org_id"] && claims["org_id"] !== expected_org
146
+ redirect_to '/unauthorized', status: 401
147
+ else
148
+ session[:userinfo] = claims
149
+ redirect_to '/dashboard'
150
+ end
151
+ else
152
+ if claims["org_name"] && claims["org_name"].downcase !== expected_org.downcase
140
153
  redirect_to '/unauthorized', status: 401
141
154
  else
142
155
  session[:userinfo] = claims
143
156
  redirect_to '/dashboard'
144
157
  end
145
158
  end
159
+ end
146
160
  ```
147
161
 
148
162
  For more information, please read [Work with Tokens and Organizations](https://auth0.com/docs/organizations/using-tokens) on Auth0 Docs.
data/Gemfile CHANGED
@@ -2,7 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'gem-release', '~> 2'
6
5
  gem 'jwt', '~> 2'
7
6
  gem 'rake', '~> 13'
8
7
 
@@ -10,17 +9,17 @@ group :development do
10
9
  gem 'dotenv', '~> 2'
11
10
  gem 'pry', '~> 0'
12
11
  gem 'rubocop', '~> 1', require: false
13
- gem 'shotgun', '~> 0'
14
- gem 'sinatra', '~> 2'
12
+ gem 'shotgun', '~> 0', '>= 0.9.2'
13
+ gem 'sinatra', '~> 3'
15
14
  gem 'thin', '~> 1'
16
15
  end
17
16
 
18
17
  group :test do
19
18
  gem 'guard-rspec', '~> 4', require: false
20
19
  gem 'listen', '~> 3'
21
- gem 'rack-test', '~> 2'
20
+ gem 'rack-test', '~> 2', '>= 2.0.2'
22
21
  gem 'rspec', '~> 3'
23
- gem 'simplecov-cobertura', '~> 2'
22
+ gem 'simplecov-cobertura', '~> 3.0'
24
23
  gem 'webmock', '~> 3'
25
24
  gem 'multi_json', '~> 1'
26
25
  end
data/Gemfile.lock CHANGED
@@ -1,34 +1,46 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- omniauth-auth0 (3.1.0)
4
+ omniauth-auth0 (3.2.0)
5
+ jwt (~> 2)
5
6
  omniauth (~> 2)
6
7
  omniauth-oauth2 (~> 1)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
- addressable (2.8.1)
12
- public_suffix (>= 2.0.2, < 6.0)
13
- ast (2.4.2)
12
+ addressable (2.9.0)
13
+ public_suffix (>= 2.0.2, < 8.0)
14
+ ast (2.4.3)
15
+ auth-sanitizer (0.1.4)
16
+ version_gem (~> 1.1, >= 1.1.9)
17
+ base64 (0.3.0)
18
+ bigdecimal (4.1.2)
14
19
  coderay (1.1.3)
15
- crack (0.4.5)
20
+ crack (1.0.1)
21
+ bigdecimal
16
22
  rexml
17
23
  daemons (1.4.1)
18
- diff-lcs (1.5.0)
19
- docile (1.4.0)
24
+ diff-lcs (1.6.2)
25
+ docile (1.4.1)
20
26
  dotenv (2.8.1)
21
27
  eventmachine (1.2.7)
22
- faraday (2.7.1)
23
- faraday-net_http (>= 2.0, < 3.1)
24
- ruby2_keywords (>= 0.0.4)
25
- faraday-net_http (3.0.2)
26
- ffi (1.15.5)
27
- formatador (1.1.0)
28
- gem-release (2.2.2)
29
- guard (2.18.0)
28
+ faraday (2.14.2)
29
+ faraday-net_http (>= 2.0, < 3.5)
30
+ json
31
+ logger
32
+ faraday-net_http (3.4.3)
33
+ net-http (~> 0.5)
34
+ ffi (1.17.4-aarch64-linux-gnu)
35
+ ffi (1.17.4-arm64-darwin)
36
+ ffi (1.17.4-x86_64-darwin)
37
+ ffi (1.17.4-x86_64-linux-gnu)
38
+ formatador (1.2.3)
39
+ reline
40
+ guard (2.20.1)
30
41
  formatador (>= 0.2.4)
31
42
  listen (>= 2.7, < 4.0)
43
+ logger (~> 1.6)
32
44
  lumberjack (>= 1.0.12, < 2.0)
33
45
  nenv (~> 0.1)
34
46
  notiffany (~> 0.0)
@@ -40,139 +52,164 @@ GEM
40
52
  guard (~> 2.1)
41
53
  guard-compat (~> 1.1)
42
54
  rspec (>= 2.99.0, < 4.0)
43
- hashdiff (1.0.1)
44
- hashie (5.0.0)
45
- json (2.6.3)
46
- jwt (2.5.0)
47
- listen (3.7.1)
55
+ hashdiff (1.2.1)
56
+ hashie (5.1.0)
57
+ logger
58
+ io-console (0.8.2)
59
+ json (2.19.7)
60
+ jwt (2.10.3)
61
+ base64
62
+ language_server-protocol (3.17.0.5)
63
+ lint_roller (1.1.0)
64
+ listen (3.10.0)
65
+ logger
48
66
  rb-fsevent (~> 0.10, >= 0.10.3)
49
67
  rb-inotify (~> 0.9, >= 0.9.10)
50
- lumberjack (1.2.8)
51
- method_source (1.0.0)
52
- multi_json (1.15.0)
53
- multi_xml (0.6.0)
54
- mustermann (2.0.2)
55
- ruby2_keywords (~> 0.0.1)
68
+ logger (1.7.0)
69
+ lumberjack (1.4.2)
70
+ method_source (1.1.0)
71
+ multi_json (1.21.1)
72
+ multi_xml (0.9.1)
73
+ bigdecimal (>= 3.1, < 5)
74
+ mustermann (3.1.1)
56
75
  nenv (0.3.0)
76
+ net-http (0.9.1)
77
+ uri (>= 0.11.1)
57
78
  notiffany (0.1.3)
58
79
  nenv (~> 0.1)
59
80
  shellany (~> 0.0)
60
- oauth2 (2.0.9)
61
- faraday (>= 0.17.3, < 3.0)
62
- jwt (>= 1.0, < 3.0)
81
+ oauth2 (2.0.20)
82
+ auth-sanitizer (~> 0.1, >= 0.1.3)
83
+ faraday (>= 0.17.3, < 4.0)
84
+ jwt (>= 1.0, < 4.0)
85
+ logger (~> 1.2)
63
86
  multi_xml (~> 0.5)
64
87
  rack (>= 1.2, < 4)
65
- snaky_hash (~> 2.0)
66
- version_gem (~> 1.1)
67
- omniauth (2.1.0)
88
+ snaky_hash (~> 2.0, >= 2.0.4)
89
+ version_gem (~> 1.1, >= 1.1.9)
90
+ omniauth (2.1.4)
68
91
  hashie (>= 3.4.6)
92
+ logger
69
93
  rack (>= 2.2.3)
70
94
  rack-protection
71
- omniauth-oauth2 (1.8.0)
72
- oauth2 (>= 1.4, < 3)
95
+ omniauth-oauth2 (1.9.0)
96
+ oauth2 (>= 2.0.2, < 3)
73
97
  omniauth (~> 2.0)
74
- parallel (1.22.1)
75
- parser (3.1.3.0)
98
+ parallel (1.28.0)
99
+ parser (3.3.11.1)
76
100
  ast (~> 2.4.1)
77
- pry (0.14.1)
101
+ racc
102
+ prism (1.9.0)
103
+ pry (0.16.0)
78
104
  coderay (~> 1.1)
79
105
  method_source (~> 1.0)
80
- public_suffix (5.0.0)
81
- rack (2.2.4)
82
- rack-protection (2.2.3)
83
- rack
84
- rack-test (2.0.2)
106
+ reline (>= 0.6.0)
107
+ public_suffix (7.0.5)
108
+ racc (1.8.1)
109
+ rack (2.2.23)
110
+ rack-protection (3.2.0)
111
+ base64 (>= 0.1.0)
112
+ rack (~> 2.2, >= 2.2.4)
113
+ rack-test (2.2.0)
85
114
  rack (>= 1.3)
86
115
  rainbow (3.1.1)
87
- rake (13.0.6)
116
+ rake (13.4.2)
88
117
  rb-fsevent (0.11.2)
89
- rb-inotify (0.10.1)
118
+ rb-inotify (0.11.1)
90
119
  ffi (~> 1.0)
91
- regexp_parser (2.6.1)
92
- rexml (3.2.5)
93
- rspec (3.12.0)
94
- rspec-core (~> 3.12.0)
95
- rspec-expectations (~> 3.12.0)
96
- rspec-mocks (~> 3.12.0)
97
- rspec-core (3.12.0)
98
- rspec-support (~> 3.12.0)
99
- rspec-expectations (3.12.0)
120
+ regexp_parser (2.12.0)
121
+ reline (0.6.3)
122
+ io-console (~> 0.5)
123
+ rexml (3.4.4)
124
+ rspec (3.13.2)
125
+ rspec-core (~> 3.13.0)
126
+ rspec-expectations (~> 3.13.0)
127
+ rspec-mocks (~> 3.13.0)
128
+ rspec-core (3.13.6)
129
+ rspec-support (~> 3.13.0)
130
+ rspec-expectations (3.13.5)
100
131
  diff-lcs (>= 1.2.0, < 2.0)
101
- rspec-support (~> 3.12.0)
102
- rspec-mocks (3.12.0)
132
+ rspec-support (~> 3.13.0)
133
+ rspec-mocks (3.13.8)
103
134
  diff-lcs (>= 1.2.0, < 2.0)
104
- rspec-support (~> 3.12.0)
105
- rspec-support (3.12.0)
106
- rubocop (1.39.0)
135
+ rspec-support (~> 3.13.0)
136
+ rspec-support (3.13.7)
137
+ rubocop (1.86.2)
107
138
  json (~> 2.3)
108
- parallel (~> 1.10)
109
- parser (>= 3.1.2.1)
139
+ language_server-protocol (~> 3.17.0.2)
140
+ lint_roller (~> 1.1.0)
141
+ parallel (>= 1.10)
142
+ parser (>= 3.3.0.2)
110
143
  rainbow (>= 2.2.2, < 4.0)
111
- regexp_parser (>= 1.8, < 3.0)
112
- rexml (>= 3.2.5, < 4.0)
113
- rubocop-ast (>= 1.23.0, < 2.0)
144
+ regexp_parser (>= 2.9.3, < 3.0)
145
+ rubocop-ast (>= 1.49.0, < 2.0)
114
146
  ruby-progressbar (~> 1.7)
115
- unicode-display_width (>= 1.4.0, < 3.0)
116
- rubocop-ast (1.24.0)
117
- parser (>= 3.1.1.0)
118
- ruby-progressbar (1.11.0)
119
- ruby2_keywords (0.0.5)
147
+ unicode-display_width (>= 2.4.0, < 4.0)
148
+ rubocop-ast (1.49.1)
149
+ parser (>= 3.3.7.2)
150
+ prism (~> 1.7)
151
+ ruby-progressbar (1.13.0)
120
152
  shellany (0.0.1)
121
153
  shotgun (0.9.2)
122
154
  rack (>= 1.0)
123
- simplecov (0.21.2)
155
+ simplecov (0.22.0)
124
156
  docile (~> 1.1)
125
157
  simplecov-html (~> 0.11)
126
158
  simplecov_json_formatter (~> 0.1)
127
- simplecov-cobertura (2.1.0)
159
+ simplecov-cobertura (3.1.0)
128
160
  rexml
129
161
  simplecov (~> 0.19)
130
- simplecov-html (0.12.3)
162
+ simplecov-html (0.13.2)
131
163
  simplecov_json_formatter (0.1.4)
132
- sinatra (2.2.3)
133
- mustermann (~> 2.0)
134
- rack (~> 2.2)
135
- rack-protection (= 2.2.3)
164
+ sinatra (3.2.0)
165
+ mustermann (~> 3.0)
166
+ rack (~> 2.2, >= 2.2.4)
167
+ rack-protection (= 3.2.0)
136
168
  tilt (~> 2.0)
137
- snaky_hash (2.0.1)
138
- hashie
139
- version_gem (~> 1.1, >= 1.1.1)
140
- thin (1.8.1)
169
+ snaky_hash (2.0.4)
170
+ hashie (>= 0.1.0, < 6)
171
+ version_gem (>= 1.1.8, < 3)
172
+ thin (1.8.2)
141
173
  daemons (~> 1.0, >= 1.0.9)
142
174
  eventmachine (~> 1.0, >= 1.0.4)
143
175
  rack (>= 1, < 3)
144
- thor (1.2.1)
145
- tilt (2.0.11)
146
- unicode-display_width (2.3.0)
147
- version_gem (1.1.1)
148
- webmock (3.18.1)
176
+ thor (1.5.0)
177
+ tilt (2.7.0)
178
+ unicode-display_width (3.2.0)
179
+ unicode-emoji (~> 4.1)
180
+ unicode-emoji (4.2.0)
181
+ uri (1.1.1)
182
+ version_gem (1.1.9)
183
+ webmock (3.26.2)
149
184
  addressable (>= 2.8.0)
150
185
  crack (>= 0.3.2)
151
186
  hashdiff (>= 0.4.0, < 2.0.0)
152
187
 
153
188
  PLATFORMS
189
+ aarch64-linux
154
190
  arm64-darwin-21
155
- x86_64-darwin-20
156
- x86_64-darwin-21
191
+ arm64-darwin-22
192
+ arm64-darwin-23
193
+ arm64-darwin-25
194
+ x86_64-darwin-22
157
195
  x86_64-linux
158
196
 
159
197
  DEPENDENCIES
160
198
  bundler
161
199
  dotenv (~> 2)
162
- gem-release (~> 2)
163
200
  guard-rspec (~> 4)
164
201
  jwt (~> 2)
165
202
  listen (~> 3)
166
203
  multi_json (~> 1)
167
204
  omniauth-auth0!
168
205
  pry (~> 0)
169
- rack-test (~> 2)
206
+ rack-test (~> 2, >= 2.0.2)
170
207
  rake (~> 13)
171
208
  rspec (~> 3)
172
209
  rubocop (~> 1)
173
- shotgun (~> 0)
174
- simplecov-cobertura (~> 2)
175
- sinatra (~> 2)
210
+ shotgun (~> 0, >= 0.9.2)
211
+ simplecov-cobertura (~> 3.0)
212
+ sinatra (~> 3)
176
213
  thin (~> 1)
177
214
  webmock (~> 3)
178
215