omniauth-heroku 0.4.1 → 1.1.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: 7114a261c4657b1093fa15c002dc0c5dc501c3a147670c99b31bb82bb2173290
4
- data.tar.gz: 409fe3bd640e82ec72fc30f92ef9a0fd383bb95260b4f1d8d7d9d070b6d325b4
3
+ metadata.gz: 00dcae64b48a77f71debc3e5066b07645e33021cea95668ae787b4684759e5cb
4
+ data.tar.gz: 1c4434bd4bf82e887142e8d917e527e1e45c8697ea7dfd9b9ef93d0bfeb052f4
5
5
  SHA512:
6
- metadata.gz: 36e9c08495d7941cf3a19b8e2b972ec2d70fd992c326f88586141892c5bc445ab4ee9ff28927062d6a5babd58351f7b16fda97fcea9e5933750bc73178f5d6fd
7
- data.tar.gz: 6d8bcd09cd0847c01f870ad2d955a90b21ac449b56ba0aafcd275790a9fc8efbca5aae86252a80f3ec916583780d352516b4065e275a9b9450c6201d034c4703
6
+ metadata.gz: ece7398034fdd0dc42c856e564ca5065cc644fc8f0e00b0beeae00c7db08d7926188bef8986ebb565e3ee51e341a9fd963d01c392bdd06d903be66908e482376
7
+ data.tar.gz: 38434e1e7f241223bf3530e7fbe743146380d2ceab5af67cb059023a7282b6c7239fa8d56407640ff536ca4837d7626752b3721234e69a1397b43affa42a964d
@@ -0,0 +1,31 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-latest
8
+
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ ruby: ['head', '4.0', '3.4', '3.3']
13
+ gemfile: ["omniauth1", "omniauth2"]
14
+
15
+ continue-on-error: ${{ matrix.ruby == 'head' }}
16
+
17
+ env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
18
+ BUNDLE_GEMFILE: Gemfile-${{ matrix.gemfile }}
19
+
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+
23
+ - name: Setup Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+
29
+ - name: Build and test
30
+ run: bin/rspec
31
+
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ # Ignore all logfiles and tempfiles
2
+ /coverage/
3
+ /log/
4
+ /spec/reports
5
+ /spec/rspec-status.txt
6
+ /tmp/
7
+ /tags
8
+
9
+ # Package and dependency caches
10
+ /.bundle
11
+ /Gemfile.lock
12
+ /pkg/
13
+
14
+ # Generated documentation
15
+ /doc/
16
+ /.yardoc
17
+ /_yardoc/
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --require spec_helper
2
+ --color
3
+ --format progress
data/CHANGELOG.md ADDED
@@ -0,0 +1,53 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
5
+ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+ ### Added
9
+ ### Changed
10
+ ### Removed
11
+
12
+ ## [1.1.0] 2026-04-29
13
+
14
+ ### Changed
15
+
16
+ - house keeping: update GitHub Actions
17
+ - replace MultiJson with JSON (built-in)
18
+
19
+ ## [1.0.0] 2021-07-14
20
+
21
+ ### Changed
22
+
23
+ - Support `omniauth` versions `>= 1.9` but `< 3`.
24
+ i.e., support version `2` which addresses some CVEs.
25
+ - Standardize syntax and style via [Standard.rb](https://github.com/testdouble/standard)
26
+
27
+ ### Breaking
28
+
29
+ - Loosen `omniauth-oauth2` requirement to allow `>= 1.7.0`.
30
+ With this change, blocks give to dynamically determine the `:scope` argument will be passed the Rack `env`, rather than an instance of the `Rack::Request`.
31
+ See the [Upgrading to 1.0 docs](README.md#upgrading-to-10) for more.
32
+ - Remove `AuthUrl` and `ApiUrl` constants from `OmniAuth::Strategies::Heroku`.
33
+ These were internal details, not meant to be part of the public API.
34
+ - Require Ruby `>= 2.3.0`.
35
+ We were only supporting that anyway, but now it's explicit.
36
+ However, we do recommend only running on [actively supported Rubies](https://www.ruby-lang.org/en/downloads/branches/).
37
+
38
+ ## [0.4.1] 2021-07-06
39
+
40
+ ### Changed
41
+ - Lock to `omniauth-oauth2 ~> 1.6.0` to fix regression in dynamic `:scope` option.
42
+ With `omniauth-oauth2 >= 1.7.0`, the block is passed the Rack `env` as the parameter.
43
+ This breaks our expectation the will receive a `Rack::Request` instance as the argument to dynamically determine the `:scope` option.
44
+ i.e., this broken:
45
+
46
+ ```ruby
47
+ use OmniAuth::Builder do
48
+ provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
49
+ scope: ->(request) { request.params["scope"] || "identity" }
50
+ end
51
+ ```
52
+
53
+ See [PR #22](https://github.com/heroku/omniauth-heroku/pull/22) for more context, workaround, etc...
data/CODEOWNERS ADDED
@@ -0,0 +1,2 @@
1
+ # Comment line immediately above ownership line is reserved for related gus information. Please be careful while editing.
2
+ #ECCN:Open Source
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://www.rubygems.org"
2
+
3
+ gemspec
data/Gemfile-omniauth1 ADDED
@@ -0,0 +1,5 @@
1
+ source "https://www.rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem "omniauth", "~> 1.9"
data/Gemfile-omniauth2 ADDED
@@ -0,0 +1,5 @@
1
+ source "https://www.rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem "omniauth", "~> 2.0"
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # OmniAuth Heroku
2
2
 
3
3
  [![Build Status](https://github.com/heroku/omniauth-heroku/actions/workflows/ci.yml/badge.svg)](https://github.com/heroku/omniauth-heroku/actions)
4
+ [![Gem Version](https://badge.fury.io/rb/omniauth-heroku.svg)](https://badge.fury.io/rb/omniauth-heroku)
4
5
 
5
6
  [OmniAuth](https://github.com/intridea/omniauth) strategy for authenticating
6
7
  Heroku users.
@@ -89,20 +90,41 @@ use OmniAuth::Builder do
89
90
  end
90
91
  ```
91
92
 
92
- This will trim down the permissions associated to the access token given back
93
- to you.
93
+ This will trim down the permissions associated to the access token given back to you.
94
94
 
95
- The Oauth scope can also be decided dynamically at runtime. For example, you
96
- could use a `scope` GET parameter if it exists, and revert to a default `scope`
97
- if it does not:
95
+ The OAuth scope can also be decided dynamically at runtime.
96
+ For example, you could use a `scope` parameter from the request, if it exists, with a default value if it does not:
98
97
 
99
98
  ```ruby
100
99
  use OmniAuth::Builder do
101
100
  provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
102
- scope: ->(request) { request.params["scope"] || "identity" }
101
+ scope: ->(env) { Rack::Request.new(env).params["scope"] || "identity" }
103
102
  end
104
103
  ```
105
104
 
105
+ #### Upgrading to 1.0+
106
+
107
+ Versions before `1.0` allowed you to pass `:scope` option as a block, just as today.
108
+ However, that block received a `Rack::Request` instance, rather than the `Rack` `env`.
109
+ If you used the `Rack::Request` argument in your `:scope` block you can update your code to create a new instance, from the `env`.
110
+
111
+ For example, `< 1.0` code that looked like this:
112
+
113
+ ```ruby
114
+ use OmniAuth::Builder do
115
+ provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
116
+ scope: ->(request) { request.params["scope"] }
117
+ end
118
+ ```
119
+
120
+ need to be updated to something like this:
121
+
122
+ ```ruby
123
+ use OmniAuth::Builder do
124
+ provider :heroku, ENV.fetch("HEROKU_OAUTH_ID"), ENV.fetch("HEROKU_OAUTH_SECRET"),
125
+ scope: ->(env) { Rack::Request.new(env).params["scope"] }
126
+ end
127
+ ```
106
128
 
107
129
  ## Example - Sinatra
108
130
 
@@ -162,7 +184,7 @@ class SessionsController < ApplicationController
162
184
  end
163
185
 
164
186
  def create
165
- access_token = request.env['omniauth.auth']['credentials']['token']
187
+ access_token = request.env["omniauth.auth"]["credentials"]["token"]
166
188
  # DO NOT store this token in an unencrypted cookie session
167
189
  # Please read "A note on security" below!
168
190
  heroku = PlatformAPI.connect_oauth(access_token)
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ task default: :spec
6
+
7
+ desc "Run the specs"
8
+ RSpec::Core::RakeTask.new do |t|
9
+ t.pattern = "spec/**/*_spec.rb"
10
+ end
data/bin/rake ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rake", "rake")
data/bin/rspec ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rspec-core", "rspec")
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OmniAuth
4
+ module Heroku
5
+ VERSION = "1.1.0"
6
+ end
7
+ end
@@ -1,20 +1,25 @@
1
- require 'omniauth-oauth2'
1
+ # frozen_string_literal: true
2
+
3
+ require "omniauth-oauth2"
2
4
 
3
5
  module OmniAuth
4
6
  module Strategies
5
7
  class Heroku < OmniAuth::Strategies::OAuth2
6
- AuthUrl = ENV["HEROKU_AUTH_URL"] || "https://id.heroku.com"
7
- ApiUrl = ENV["HEROKU_API_URL"] || "https://api.heroku.com"
8
+ # This style of overriding the default means it can only be done when the class is loaded.
9
+ # Which is problematic for testing, and a bit against the grain of how the base class
10
+ # expects this to work, where consumers would explicitly override by passing in the option.
11
+ AUTH_URL = ENV.fetch("HEROKU_AUTH_URL", "https://id.heroku.com")
12
+ private_constant :AUTH_URL
8
13
 
9
- option :client_options, {
10
- site: AuthUrl,
11
- authorize_url: "#{AuthUrl}/oauth/authorize",
12
- token_url: "#{AuthUrl}/oauth/token"
13
- }
14
+ option(:client_options, {
15
+ site: AUTH_URL,
16
+ authorize_url: "#{AUTH_URL}/oauth/authorize",
17
+ token_url: "#{AUTH_URL}/oauth/token"
18
+ })
14
19
 
15
- # whether we should make another API call to Heroku to fetch
20
+ # Configure whether we make another API call to Heroku to fetch
16
21
  # additional account info like the real user name and email
17
- option :fetch_info
22
+ option :fetch_info, false
18
23
 
19
24
  uid do
20
25
  access_token.params["user_id"]
@@ -22,17 +27,16 @@ module OmniAuth
22
27
 
23
28
  info do
24
29
  if options.fetch_info
25
- email_hash = Digest::MD5.hexdigest(account_info['email'].to_s)
26
- default_image_url = "https://dashboard.heroku.com/ninja-avatar-48x48.png"
27
- image_url = "https://secure.gravatar.com/avatar/#{email_hash}.png?d=#{default_image_url}"
30
+ email_hash = Digest::MD5.hexdigest(account_info["email"].to_s)
31
+ image_url = "https://secure.gravatar.com/avatar/#{email_hash}.png?d=#{DEFAULT_IMAGE_URL}"
28
32
 
29
33
  {
30
- name: account_info["name"],
34
+ name: account_info["name"],
31
35
  email: account_info["email"],
32
- image: image_url,
36
+ image: image_url
33
37
  }
34
38
  else
35
- { name: "Heroku user" } # only mandatory field
39
+ {name: "Heroku user"} # only mandatory field
36
40
  end
37
41
  end
38
42
 
@@ -56,26 +60,30 @@ module OmniAuth
56
60
  end
57
61
  end
58
62
 
59
- def authorize_params
60
- super.tap do |params|
61
- # Allow the scope to be determined dynamically based on the request.
62
- if params.scope.respond_to?(:call)
63
- params.scope = params.scope.call(request)
64
- end
65
- end
66
- end
63
+ private
64
+
65
+ DEFAULT_API_URL = "https://api.heroku.com"
66
+ private_constant :DEFAULT_API_URL
67
+
68
+ DEFAULT_IMAGE_URL = "https://dashboard.heroku.com/ninja-avatar-48x48.png"
69
+ private_constant :DEFAULT_IMAGE_URL
67
70
 
68
71
  def account_info
69
- @account_info ||= MultiJson.decode(heroku_api.get("/account").body)
72
+ @account_info ||= JSON.parse(heroku_api.get("/account").body)
73
+ end
74
+
75
+ def api_url
76
+ @api_url ||= ENV.fetch("HEROKU_API_URL", DEFAULT_API_URL)
70
77
  end
71
78
 
72
79
  def heroku_api
73
80
  @heroku_api ||= Faraday.new(
74
- url: ApiUrl,
81
+ url: api_url,
75
82
  headers: {
76
83
  "Accept" => "application/vnd.heroku+json; version=3",
77
- "Authorization" => "Bearer #{access_token.token}",
78
- })
84
+ "Authorization" => "Bearer #{access_token.token}"
85
+ }
86
+ )
79
87
  end
80
88
 
81
89
  def missing_client_id?
@@ -1 +1,2 @@
1
- require 'omniauth/strategies/heroku'
1
+ require "omniauth/heroku/version"
2
+ require "omniauth/strategies/heroku"
@@ -0,0 +1,38 @@
1
+ require File.expand_path("lib/omniauth/heroku/version", __dir__)
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "omniauth-heroku"
5
+ spec.version = OmniAuth::Heroku::VERSION
6
+ spec.authors = ["Pedro Belo"]
7
+ spec.email = ["pedro@heroku.com"]
8
+
9
+ spec.summary = "OmniAuth strategy for Heroku."
10
+ spec.description = "OmniAuth strategy for Heroku, for apps already using OmniAuth that authenticate against more than one service (eg: Heroku and GitHub), or apps that have specific needs on session management."
11
+ spec.homepage = "https://github.com/heroku/omniauth-heroku"
12
+ spec.license = "MIT"
13
+
14
+ spec.metadata = {
15
+ "homepage_uri" => spec.homepage,
16
+ "source_code_uri" => spec.homepage,
17
+ "bug_tracker_uri" => "#{spec.homepage}/issues",
18
+ "changelog_uri" => "#{spec.homepage}/blob/master/CHANGELOG.md"
19
+ }
20
+
21
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = []
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_runtime_dependency("omniauth", [">= 1.9", "< 3"])
33
+ spec.add_runtime_dependency("omniauth-oauth2", "~> 1.7")
34
+
35
+ spec.add_development_dependency("rake", "~> 13.0")
36
+ spec.add_development_dependency("rspec", "~> 3.4")
37
+ spec.add_development_dependency("webmock", "~> 3.13")
38
+ end
metadata CHANGED
@@ -1,59 +1,124 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-heroku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Belo
8
- autorequire:
9
- bindir: bin
8
+ bindir: exe
10
9
  cert_chain: []
11
- date: 2021-07-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: omniauth
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.9'
19
+ - - "<"
18
20
  - !ruby/object:Gem::Version
19
- version: 1.9.0
21
+ version: '3'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
23
25
  requirements:
24
- - - "~>"
26
+ - - ">="
25
27
  - !ruby/object:Gem::Version
26
- version: 1.9.0
28
+ version: '1.9'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '3'
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: omniauth-oauth2
29
34
  requirement: !ruby/object:Gem::Requirement
30
35
  requirements:
31
36
  - - "~>"
32
37
  - !ruby/object:Gem::Version
33
- version: 1.6.0
38
+ version: '1.7'
34
39
  type: :runtime
35
40
  prerelease: false
36
41
  version_requirements: !ruby/object:Gem::Requirement
37
42
  requirements:
38
43
  - - "~>"
39
44
  - !ruby/object:Gem::Version
40
- version: 1.6.0
41
- description: OmniAuth strategy for Heroku.
45
+ version: '1.7'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '13.0'
53
+ type: :development
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '13.0'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rspec
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.4'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '3.4'
74
+ - !ruby/object:Gem::Dependency
75
+ name: webmock
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.13'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.13'
88
+ description: 'OmniAuth strategy for Heroku, for apps already using OmniAuth that authenticate
89
+ against more than one service (eg: Heroku and GitHub), or apps that have specific
90
+ needs on session management.'
42
91
  email:
43
92
  - pedro@heroku.com
44
93
  executables: []
45
94
  extensions: []
46
95
  extra_rdoc_files: []
47
96
  files:
97
+ - ".github/workflows/ci.yml"
98
+ - ".gitignore"
99
+ - ".rspec"
100
+ - CHANGELOG.md
101
+ - CODEOWNERS
102
+ - Gemfile
103
+ - Gemfile-omniauth1
104
+ - Gemfile-omniauth2
48
105
  - LICENSE
49
106
  - README.md
107
+ - Rakefile
108
+ - bin/rake
109
+ - bin/rspec
50
110
  - lib/omniauth-heroku.rb
111
+ - lib/omniauth/heroku/version.rb
51
112
  - lib/omniauth/strategies/heroku.rb
113
+ - omniauth-heroku.gemspec
52
114
  homepage: https://github.com/heroku/omniauth-heroku
53
115
  licenses:
54
116
  - MIT
55
- metadata: {}
56
- post_install_message:
117
+ metadata:
118
+ homepage_uri: https://github.com/heroku/omniauth-heroku
119
+ source_code_uri: https://github.com/heroku/omniauth-heroku
120
+ bug_tracker_uri: https://github.com/heroku/omniauth-heroku/issues
121
+ changelog_uri: https://github.com/heroku/omniauth-heroku/blob/master/CHANGELOG.md
57
122
  rdoc_options: []
58
123
  require_paths:
59
124
  - lib
@@ -61,15 +126,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
126
  requirements:
62
127
  - - ">="
63
128
  - !ruby/object:Gem::Version
64
- version: '0'
129
+ version: 2.3.0
65
130
  required_rubygems_version: !ruby/object:Gem::Requirement
66
131
  requirements:
67
132
  - - ">="
68
133
  - !ruby/object:Gem::Version
69
134
  version: '0'
70
135
  requirements: []
71
- rubygems_version: 3.2.14
72
- signing_key:
136
+ rubygems_version: 4.0.3
73
137
  specification_version: 4
74
138
  summary: OmniAuth strategy for Heroku.
75
139
  test_files: []